Jump to content

Sam Jones

  • Posts

  • Joined

  • Last visited

Everything posted by Sam Jones

  1. I didn't understand any of that. Is there a kindergarten version explanation?
  2. You might try using "Inst Type" instead of "Instrument Type". "Inst Type" is the worksheet or universal name for that parameter. Just a thought; I haven't tried it.
  3. Happens to me too, Pat, but I've just been playing around with Truss, Hoists, and Hanging Positions. I will be curious if any source of the problem you find might not be dependent on the tagged object. I would send you an example, but I deleted them as they occurred and moved on; I thought I might be doing something wrong.
  4. Cool. I'm looking forward to checking them out.
  5. This also happens to me. I wish I could find out what is causing it. I have found that nudging the selected object up and down will restore the OIP.
  6. Matt, The new hoist is confusing in the extreme. None of the parameters can be viewed with the plug-In manager, but, as you have seen, they can be listed when you create a worksheet of the Hoist PIO. The universal name of the new Hoist PIO is BrxHoist. I have written a script that collects all of the parameters of a selected object and writes them to a worksheet. Below is an image of all the weight and weight related fields that I could find. I will be referencing the column A names. You will notice that "WeightWithChain" comes in formatted as a dimension. It does that both in the vectorscript and the worksheet database. As a result I have no idea what that number actually represents. I have written another script that collects the weights of all selected objects (of any kind) and lists them in a worksheet and totals them. For the BrxHoist, I use the "WeightWithChain_formated" field. I parse the units being used "lb" or "kg" and convert to kg and lb as needed. I haven't tested, but I suspect that metric drawings are formatted in "kg" and imperial drawings are formatted in "lb". But this needs to be tested. My script doesn't care since it will take whatever comes in (kg or lb) and convert to the other. Hopefully, VW will come back with an explanation of all weight relevant BrxHoist parameters, but until then good luck with your worksheets. If you are interested in the "Collect and Total Weight" command it is part of the latest AutoPlot Tools for Spotlight upload, 6/17/21. Which is fully functional for 2 months without registering.
  7. Thank you Josh! I've used waldo before, and I'm embarrassed that I did not think of it, but it is a different application from my previous ones. The use of "PrevSObj()" is fabulous, very scalable and applicable for the vast majority of my needs.
  8. I want to get a handle to a selected object that is inside a group. In particular, I want to get this handle while I am inside the group editing it. Actually it is inside a group that is inside a group. I know that the group is the parent to the selected object, but there does not seem to be a way to get a handle to a selected object while editing that object inside the group. FSActLayer returns the handle to the highest level group that contains the object being edited. Actually, I'm not so much editing it as collecting data about it which is why I need its handle. Anybody have a neat little trick to get a handle to selected object inside a group that is inside a group. I am, of course, in group edit mode.
  9. I looked at the above. After a bunch of trial and error, I was able to build an example below the "====" line, but I really don't understand what I'm doing. Here is what I am tripping over. These procedures/function have obvious functionality and are understood. PROCEDURE ProgressDlgClose; PROCEDURE ProgressDlgEnd; FUNCTION ProgressDlgHasCancel:BOOLEAN ; PROCEDURE ProgressDlgOpen( title :STRING; canCancel :BOOLEAN) ; PROCEDURE ProgressDlgOpenDelay( title:STRING;canCancel:BOOLEAN; delaySec:INTEGER) ; PROCEDURE ProgressDlgSetBotMsg( message:STRING ) ; PROCEDURE ProgressDlgSetTopMsg( message:STRING ) ; only sort of obvious. I expected it to be in the position of the SetMeter String Then there are these: PROCEDURE ProgressDlgSetMeter( message:STRING ) ; "Set progress meter message of a progress dialog." With minimal testing this became clear. It would have been nice if it had beem named "SetProgressDlgLabel" or "ProgressDlgSetLabel". "...SetMeter" is opaque until after one figures it out. PROCEDURE ProgressDlgStart( Percentage :REAL; LoopCount :LONGINT) ; "Start a progress context. This defines progress percentage and loop count for ProgressDlgYield calls. LoopCount is fit in the Percentage of the progress." "Percentage". Percentage of what going in what direction? "LoopCount". "LoopCount" ???? What Loop? What Count? PROCEDURE ProgressDlgYield( count:LONGINT ) ; " Increases the progress. This must be called between ProgressDlgStart and ProgressDlgEnd and defines the LoopCount index." "count"??? Counting what? All the examples have this set to "1" What does this do? Where in the loop or in the survey by criteria is this needed. What happens if the value is not "1", maybe "2" or maybe "0"? It is defined as a LONGINT, so it would seeem a bunch of values can be expected. I really don't understand this call, but I put it in each iteration of the repeating task. ============================================================== PROCEDURE ProgressDialogExample; VAR index :INTEGER; x1, y1, x2, y2 :REAL; progress :LONGINT; BEGIN x1 := 10; y1 := 10; x2 := x1 + x1; y2 := y1 - y1; ProgressDlgOpen('Draw Squares', TRUE); ProgressDlgSetMeter ('Drawing Squares First Half'); ProgressDlgSetTopMsg ('Top'); ProgressDlgSetBotMsg ('Bottom'); ProgressDlgYield (0); { start at 0% } ProgressDlgStart(100, 30); FOR index := 1 TO 30 DO BEGIN message('index = ', index); IF index = 15 THEN ProgressDlgSetMeter ('Drawing Squares Second Half'); RECT(x1, y1, x2, y2); x1 := x1 + 5; y1 := y1 + 5; x2 := x1 + x1; y2 := y2 - 5; ProgressDlgYield (1); { Increment the progress bar } IF ProgressDlgHasCancel THEN index := 60; wait(1); END; {FOR index := 1 TO 60} ProgressDlgStart(0, 0); ProgressDlgYield (0); ProgressDlgEnd; ProgressDlgClose; Redrawall; clrmessage; END; RUN(ProgressDialogExample);
  10. Does anybody have an example of, or know where I can find an example of, the implementation of a progress dialog?
  11. The measure from a selected place, or user defined place is partly a chicken and egg problem. With Hoists, the hoists have a parameter that holds a value naming a Hoist Origin PIO. The hoist gets the location of the named hoist origin and does the math. The math is done in the code that defines the hoist. Pat is a great scripter, but I think we have to be clear about what it is likely that you will need to create. I could be wrong, and it will be great to see what others come with. I think you will need to create a script that does all the work and shoves the result into a record field of your choosing; records cannot do math by themselves. 1. Identify where you want to measure from. a) a selected object: vs command "FSActLayer" b) a user click: vs command "GetPt" c) a known object like a Hoist Origin, but perhaps one you create. Get it UUID, or give it a name, something unique and get the location of the object with that name d) some other location identification I haven't thought of 2. Select all the objects you want to which you want to attach the record. 3. Run the command that does the work a) It attaches the record to each of these objects. ForEachObject() which will run a subroutine to attach the record b) it then gets the location of each selected object and do the math and put the result in the record. This will probably be done by the same subroutine above that attaches the record. 4. Running the command a second time could, if desired, collect all the objects that already have the record, plus all the selected objects and perform the calculation and assignment work. ForEachObject() a second time that uses the presence of the record as criteria instead of selection state. Data Tags could be used to access the record. Or, if only symbols are selected, text attached to the record could display the results. The creating a command probably has the advantage of easily changing the measure from point, if desired, and is easily paired with Data Tag technology. This is not your garden variety beginning script, but it will introduce you to several important concepts and commands that will be part of almost any other command you want to try and make. It is not rocket science, let us know what you come up with. You got help from the 2 power teacher/scripters in Josh and Pat.
  12. 1. The only way the new cable tools can provide the necessary organizational information to create build lists of looms is for the user to make sure that no cable run object has more than one part. If there is such a cable run exists it must be broken into different objects using the split tool. If you are going to try and hav a workflow that can handle all the variety of cable run paths, then the above statement is absolute; there is no other way to do this. "A", not all the parts of a cable run will be members of the same loom, and "B" different parts of different cable runs will be in the same loom. 2. If you are going to control where all the parts of a given cable run land, you must do it with the split tool. This is an absolute rule. It is possible to draw the entire cable run as a single object, but you want to create loom build lists and/or more accurately control where the cable breaks land. The cable run must be split using the split tool into single part cable runs that are identified as a single cable run by the Cable ID. This still makes it difficult to create the stickers described above. It might be possible with a script. The "absoluteness" of these 2 rules is reinforced by the fact that only the whole cable run has a Loom ID. Each part needs a Loom ID, but cable parts are only virtual objects, data entries in a cable run object. The data structure of a cable run could be changed to accommodate loom IDs for each part, but that hasn't happened yet, and would not matter without better control of part end placement. I used and highlighted the word "absolute" because I wanted to be sure everyone takes notice. If you do not believe it, cable the rig below so that each separate truss stick (several connected truss objects), can be flown in without having to fly any thing else.
  13. PS: Imagine the issues when different parts of a cable run are members of different looms. Try and generate the paperwork for that. Again, use the split tool to split every cable run into single cable run parts. I'm still looking for the "Loom" parameter field. Fun, fun.
  14. Also, if you want to end a cable part at a geographic location that is a shorter distance than the part length, you will have to use the Split tool to cut the cable run into 2 parts that share a cable ID. Now the cable report has more than 1 row, and each row may have more than one part. That means that a report of parts cannot really coherently be done. So far, in my limited experience, the only way to get any kind of part location control and part reporting is to make sure that you split any cable run into individual cable parts using the split tool, making sure that no part has no more than 1 part inside it. You would then get a database report with each part of each cable run on a separate row related to each other by Cable ID. You would have to sort by Cable ID to make any sense of this, but you probably would anyway. So far, making build lists and cable stickers is a mess, unless Jesse can enlighten us further.
  15. As best I understand it, you can't display the parts this way as part of a set of cable database rows. It might be possible to write a script to write the separate parts into separate regular worksheet cells.
  16. Not in my local 2021 version, but I'll go back and download and see if I get something newer.
  17. The URL is what I needed. Even after emptying the cache, I can't get Safari to go to that version of the online Function Reference without clicking on the URL shown above.
  18. Is it possible for VS to get the structural units of a .vwx file?
  19. Josh, and perhaps Vlado and Kevin could way in, Paragraph 1 I get the concept Paragraph 2 brings up a set of questions. Question 1 Does this mean that the "LDevice_GetParamStr()" calls can be substituted for the "GetRField()" calls wherever there is a check mark in the "Multi-cell" or "Accessory" columns? Question 2 Would the following be true? "LDevice_SetParamStr(FixtureHandle, -1, -2, 'Breaker ID', '34');" and "SetRField(FixtureHandle, 'Breaker ID', '34');" are both syntactically correct and are effectively the same statements Question 3 Does an ETC Source 436 fixture have 1 cell whose index would be 0? Question 4 If so, when considering an ETC Source 436 fixture are the following statements syntactically valid and effectively equivalent? "LDevice_SetParamStr(FixtureHandle, -1, -2, 'Breaker ID', '34');" "LDevice_SetParamStr(FixtureHandle, 0, -2, 'Breaker ID', '34');" "SetRField(FixtureHandle, 'Breaker ID', '34');" Question 5 If not, why not? Question 6 What does "LDevice_ReleaseRes;" do? Question 7 (4 parts) What does the following do? LDevice_DlgResource( LayoutID :INTEGER; ControlID :INTEGER; SymbolName :STRING); what layout? what control? symbolName of what?
  20. Glad you figured it out. To me, it was the a question of "Universal Name" of what since I would be passing the handle to the lighting device and not the accessory. Good for you, and thanks.
  21. First of all I'm super glad that you found away to get the symbol name of the accessory, but the symbol name that you reference above and that I reference in the lighting device parameter list is the symbol used by the lighting device that has the accessory not the accessory. GetRField(ObjHandle, 'Lighting Device', 'Symbol Name'). Once I test it, I will use what you have figured out to reference bunch of stuff (I hope).
  22. Thank you for the pointer. I will try it out, however. Below is the list of LD parameters that I have and no where does the syntax that are using shows up. Where is "cell index", "accessory index", and "Symbol Name". I can use "Symbol Name to get the symbol name of the lighting device that has accessories. Though I haven't tried it yet, I'm confident that your use of ...GetParamStr works, but how did you think to use it in the way that you did, because to me there is not hint about doing that that I can derive from the LD parameter list. Lighting Device Universal Device Type Inst Type Edit Cell Edit Accessory FixtureID Old Inst Type Gobo Data Color Data Color Flag Data Fixture Mode Old Fixture Mode Vision Lit Override Vision Fixture Name GDTF Fixture Name GDTF Fixture Mode GDTF Fixture Type ID GDTF Fixture Custom ID GDTF CIE Color Wattage Purpose Position Unit Number Color Dimmer Absolute Address Channel UniverseAddress Universe DMX Address Num Channels Circuit Number Circuit Name System User Field 1 User Field 2 User Field 3 User Field 4 User Field 5 User Field 6 Voltage Breaker ID Time Cost Frame Size Field Angle Field Angle 2 Beam Angle Beam Angle 2 Weight Template TemplateRot1 Template2 TemplateRot2 Gobo Shift Mark Draw Beam Draw Beam as Solid Use Vertical Beam Show Beam at Fall off distance Lamp Rotation Angle Top Shutter Depth Top Shutter Angle Left Shutter Depth Left Shutter Angle Right Shutter Depth Right Shutter Angle Bottom Shutter Depth Bottom Shutter Angle Light On Lit Fog Brightness Symbol Name Use Legend Legend View 3D Flip 3D Top Bottom Flip 3D Left Right Rotate 3D Legend Flip Front Back Flip Left Right Focus Pan Tilt Throw Distance Rotate3DPosition xRot yRot EnableZRot zRot zRot2D Focus Angle Vertical Focus Angle Horizontal Angle To Face Plane Off Axis Angle ShowData Ganged With Use Active Symbol ControlPoint01X ControlPoint01Y ControlPoint02X ControlPoint02Y ControlPoint03X ControlPoint03Y ControlPoint04X ControlPoint04Y ControlPoint05X ControlPoint05Y ControlPoint06X ControlPoint06Y ControlPoint07X ControlPoint07Y ControlPoint08X ControlPoint08Y X Location Y Location Z Location Do Not Edit Alt-Chan Alt-Dim Alt-Unit Alt-Circ Is New __Version NoExport Lightwright ID RGBColor UID __CommPasteName __LabelHandlesData __LabelHandles3DData __CellsCount __AccessoriesCount Dimension UseGDTFGeometry WeightDouble Edit GDTF Data
  23. How do I get the symbol name of an accessory that is attached to a light at a given cell index and accessory index? There does not seem to be a parameter to query.
  • Create New...