Skip to content
Snippets Groups Projects

Added and Updated sw examples

Closed Shawn Liu requested to merge Shawn-sw into master
12 files
+ 819
14
Compare changes
  • Side-by-side
  • Inline
Files
12
+ 167
0
//
// SWExtractFaces module extracts top faces of the same thickness from Tools/FabLab Connect command of SolidWorks products
//
// Shawn Liu @ Dassault Systemes SolidWorks Corporation
// (c) Massachusetts Institute of Technology 2016
//
// This work may be reproduced, modified, distributed, performed, and
// displayed for any purpose, but must acknowledge the mods
// project. Copyright is retained and must be preserved. The work is
// provided as is; no warranty is provided, and users accept all
// liability.
//
// closure
//
(function(){
//
// module globals
//
var mod = {}
//
// name
//
var name = 'SWExtractFaces'
//
// initialization
//
var init = function() {
mod.address = getParameterByName('swIP') || '127.0.0.1'
mod.port = getParameterByName('swPort') || '80'
mod.socket = 0
mod.thickness.value = 0.75
socket_open()
}
//
// inputs
//
var inputs = {}
//
// outputs
//
var outputs = {
SVGArray:{type:'object',
event:function(data){
mods.output(mod, 'SVGArray', JSON.parse(data))
}
}
}
//
// interface
//
var interface = function(div){
mod.div = div
div.appendChild(document.createTextNode('server:'))
div.appendChild(document.createElement('br'))
div.appendChild(document.createTextNode('address: ' + getParameterByName('swIP')))
div.appendChild(document.createElement('br'))
div.appendChild(document.createTextNode('\u00a0\u00a0\u00a0\u00a0\u00a0port: ' + getParameterByName('swPort')))
div.appendChild(document.createElement('br'))
div.appendChild(document.createTextNode('\u00a0\u00a0status: '))
input = document.createElement('input')
input.type = 'text'
input.size = 12
div.appendChild(input)
mod.status = input
div.appendChild(document.createElement('br'))
var btn = document.createElement('button')
btn.style.margin = 1
btn.appendChild(document.createTextNode('open'))
btn.addEventListener('click', function () {
socket_open()
})
div.appendChild(btn)
var btn = document.createElement('button')
btn.style.margin = 1
btn.appendChild(document.createTextNode('close'))
btn.addEventListener('click', function () {
socket_close()
})
div.appendChild(btn)
div.appendChild(document.createElement('br'))
div.appendChild(document.createTextNode('thickness: '))
input = document.createElement('input')
input.type = 'text'
input.size = 10
div.appendChild(input)
mod.thickness = input
div.appendChild(document.createTextNode('(inch)'))
div.appendChild(document.createElement('br'))
var btn = document.createElement('button')
btn.style.margin = 1
btn.appendChild(document.createTextNode('Extract SVGs'))
btn.addEventListener('click',function() {
extract_SVGs()
})
div.appendChild(btn)
}
//
// local functions
//
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
function socket_open() {
var url = "ws://"+mod.address+':'+mod.port
mod.socket = new WebSocket(url)
mod.socket.onopen = function(event) {
mod.status.value = "opened"
var connect = {}
connect.modCmd = 'connect'
connect.owner = getParameterByName('swOwner')
connect.id = getParameterByName('swID')
socket_send(JSON.stringify(connect))
}
mod.socket.onerror = function(event) {
mod.status.value = "can not open"
}
mod.socket.onmessage = function(event) {
mod.status.value = "receive"
var swData = JSON.parse(event.data);
if (swData.swType === "FaceSVGArray") {
outputs.SVGArray.event(JSON.stringify(swData.data))
}
}
mod.socket.onclose = function (event) {
mod.status.value = "connection closed"
}
}
function socket_close() {
mod.socket.close()
mod.status.value = "closed"
mod.socket = 0
}
function socket_send(msg) {
if (mod.socket != 0) {
mod.status.value = "send"
mod.socket.send(msg)
}
else {
mod.status.value = "can't send, not open"
}
}
function extract_SVGs() {
var modcmd = new Object;
modcmd.modCmd = "AutoExtractFaces";
modcmd.thickness = Number(mod.thickness.value * 25.4); // inch to mm
socket_send(JSON.stringify(modcmd))
}
//
// return values
//
return ({
name:name,
init:init,
inputs:inputs,
outputs:outputs,
interface:interface
})
}())
Loading