Applescript to "center" in Bricksmith


Applescript to "center" in Bricksmith
#1
Aloha,

Below is an Applescript to "center" parts in Bricksmith. It computes the averages, denoted x, y, and z, of the coordinates of the selected parts and then shifts -x, -y and -z (and snaps to grid).

It requires UI Scripting to be on (and does not check if it is).

Enjoy!

Ramón

Code:
property wait : 2 -- seconds to wait for Bricksmith to react set the clipboard to "0" activate application "Bricksmith" tell application "System Events" tell process "Bricksmith" -- Copy keystroke "c" using {command down} end tell end tell -- Wait for the clipboard to update "wait" seconds repeat wait * 10 times if (the clipboard) is "0" then delay 0.1 else exit repeat end if end repeat if (the clipboard) is not "0" then set parts to the clipboard as text try set oldDelims to AppleScript's text item delimiters -- save their current state set AppleScript's text item delimiters to {" "} -- declare new delimiters set n to 0 set x to 0 set y to 0 set z to 0 repeat with part in paragraphs of parts try if text item 1 of part is "1" then set n to n + 1 set x to x + (text item 3 of part) as real set y to y + (text item 4 of part) as real set z to z + (text item 5 of part) as real end if end try end repeat if n > 0 then -- Compute averages set x to round (x / n) set y to round (y / n) set z to round (z / n) activate application "Bricksmith" tell application "System Events" tell process "Bricksmith" -- Open the "Move" window click menu item "Move…" of menu 1 of menu bar item "Edit" of menu bar 1 -- Wait for the move window to open "wait" seconds set flag to false repeat wait * 10 times try get focused of window "Move" set flag to true exit repeat end try delay 0.1 end repeat if not flag then return end if -- Type the new x coordinate if (value of text field 3 of window "Move") is not (-x as string) then set focused of text field 3 of window "Move" to true repeat with c in characters of (-x as string) keystroke c end repeat end if -- Type the new y coordinate if (value of text field 2 of window "Move") is not (-y as string) then set focused of text field 2 of window "Move" to true repeat with c in characters of (-y as string) keystroke c end repeat end if -- Type the new z coordinate if (value of text field 1 of window "Move") is not (-z as string) then set focused of text field 1 of window "Move" to true repeat with c in characters of (-z as string) keystroke c end repeat end if -- Move click button "Move" of window "Move" -- Close the move window keystroke "w" using {command down} -- Snap to grid keystroke "g" using {command down} end tell end tell end if set AppleScript's text item delimiters to oldDelims -- restore them on error beep set AppleScript's text item delimiters to oldDelims -- restore them in case something went wrong end try else beep end if
Reply
RE: Applescript to "center" in Bricksmith
#2
(2011-12-08, 23:59)Ramón Figueroa-Centeno Wrote: Aloha,

Below is an Applescript to "center" parts in Bricksmith. It computes the averages, denoted x, y, and z, of the coordinates of the selected parts and then shifts -x, -y and -z (and snaps to grid).

It requires UI Scripting to be on (and does not check if it is).

Enjoy!

Ramón

Code:
property wait : 2 -- seconds to wait for Bricksmith to react set the clipboard to "0" activate application "Bricksmith" tell application "System Events" tell process "Bricksmith" -- Copy keystroke "c" using {command down} end tell end tell -- Wait for the clipboard to update "wait" seconds repeat wait * 10 times if (the clipboard) is "0" then delay 0.1 else exit repeat end if end repeat if (the clipboard) is not "0" then set parts to the clipboard as text try set oldDelims to AppleScript's text item delimiters -- save their current state set AppleScript's text item delimiters to {" "} -- declare new delimiters set n to 0 set x to 0 set y to 0 set z to 0 repeat with part in paragraphs of parts try if text item 1 of part is "1" then set n to n + 1 set x to x + (text item 3 of part) as real set y to y + (text item 4 of part) as real set z to z + (text item 5 of part) as real end if end try end repeat if n > 0 then -- Compute averages set x to round (x / n) set y to round (y / n) set z to round (z / n) activate application "Bricksmith" tell application "System Events" tell process "Bricksmith" -- Open the "Move" window click menu item "Move…" of menu 1 of menu bar item "Edit" of menu bar 1 -- Wait for the move window to open "wait" seconds set flag to false repeat wait * 10 times try get focused of window "Move" set flag to true exit repeat end try delay 0.1 end repeat if not flag then return end if -- Type the new x coordinate if (value of text field 3 of window "Move") is not (-x as string) then set focused of text field 3 of window "Move" to true repeat with c in characters of (-x as string) keystroke c end repeat end if -- Type the new y coordinate if (value of text field 2 of window "Move") is not (-y as string) then set focused of text field 2 of window "Move" to true repeat with c in characters of (-y as string) keystroke c end repeat end if -- Type the new z coordinate if (value of text field 1 of window "Move") is not (-z as string) then set focused of text field 1 of window "Move" to true repeat with c in characters of (-z as string) keystroke c end repeat end if -- Move click button "Move" of window "Move" -- Close the move window keystroke "w" using {command down} -- Snap to grid keystroke "g" using {command down} end tell end tell end if set AppleScript's text item delimiters to oldDelims -- restore them on error beep set AppleScript's text item delimiters to oldDelims -- restore them in case something went wrong end try else beep end if
how to download applescript or applesoft in linux mint?
I have really old books for BASIC.
also how to apply applescript to ldraw files?
Reply
RE: Applescript to "center" in Bricksmith
#3
(2019-12-26, 23:40)Moreau Wrote: how to download applescript or applesoft in linux mint?
I have really old books for BASIC.
also how to apply applescript to ldraw files?

I'd just like to say that your comment makes so little sense that I assumed that you must be a bot. Then, looking at your past posts, I came to the conclusion that this probably isn't the case. AppleScript is something that is built into macOS. It does not work in any other operating systems. Bricksmith is a macOS-only LDraw editor.
Reply
« Next Oldest | Next Newest »



Forum Jump:


Users browsing this thread: 1 Guest(s)