Jump to content

Martin Crawford

Member
  • Posts

    79
  • Joined

  • Last visited

Posts posted by Martin Crawford

  1. What is the best way to count the number of plug-in objects in a drawing.

     

    I tired the following, however it always returns 1

     

            crit           = "N='Create Processor'"
            processorCount = int(vs.Count(crit))
     

    Thanks

     

  2. How can I convert a mm dim to feet and inches. I can do the math and get a decimal number, however I would like to display as 10' 5 3/16"

     

    I see there is a FormatField option as a function, however I am unable to find any documentation on how it works.

     

    Thanks

     

    Martin

  3. I am having an issue when importing Sketchup Pro drawings into VW. All the lines come in at 12 and the fills are removed. I am working on the why, however I am wondering if it would be possible to loop through all objects / symbol in the import and do the following:

     

    Change the render to Open GL

    Change the line weight to 2

    Change the fill to solid and a color

     

    Has anyone done something similar before, if so can you hint on how this would be done.

     

    Thanks

     

    Martin

     

  4. So exporting the scripts showed that the link text happens after the symbol is created and before the record is attached.

     

    I'm not clear on they why, but it works.

     

    I'm still looking at making them on plug-ins, I think it is a better overall solutions.

     

    Thanks

     

  5. The script creates around 100 symbols for the different LED panels we use. I'm then have several scripts that create plugins for a full screen. I use the symbols as I'm not sure how I would create a plugin using a plugin and if it would speed up the process. Another reason I use the symbol is I attach the size, weight, resolution, power and other specification data into the symbol that I use in a set of worksheets.

     

    How would I go about creating them as plugins instead of symbols?

     

    I forgot you could export a something as a script, I need to remember that as it would make things easer. I will try the script and see how it works.

     

    Thanks 

     

     

  6. Strange, but this does not seem to make a difference.

     

    When I run the script it creates everything, assigns the record correctly, however it does not link the ID to the record.

     

    I can attach the full py file if that is helpful.

     

    Martin

  7. I have the following code that does everything, except link the text to the record. It works if I do it manually, but not in code.

     

    Any thoughts?

     

     

            vs.BeginSym(panelName)
            TopX = (width_mm / 2)  * -1
            TopY = (height_mm / 2) 
            BotX = (width_mm / 2) 
            BotY = (height_mm / 2) * -1        
            vs.Rect(TopX, TopY, BotX, BotY)

     

            #Create the ID Text

            vs.TextFont(vs.GetFontID('ClanPro-Medium'))
            vs.MoveTo(0,0)
            vs.TextOrigin(0,0)
            if height_mm > 1000:
                vs.TextSize(22)
            elif height_mm > 700:
                vs.TextSize(18)
            elif height_mm > 500:
                vs.TextSize(14)
            else:
                vs.TextSize(12)
            vs.CreateText('ID')
            tObj = vs.LNewObj()
            vs.SetTextJust(tObj, 2)
            vs.SetTextVerticalAlign(tObj, 3)
            vs.SetTextWidth(tObj, width_mm)
            vs.SetOpacity(tObj, 30)

     

            #Link ID Number to ID
            vs.LinkText(tObj, 'LED Install - Panel', 'ID')

            vs.EndSym()

  8. I have a set of scripts that all use an equipment model number to work. I would like to know if there is a way that I can have a script update the pop-up choices on all the scripts. This would would make adding new equipment faster, especially as I already have a script that creates the equipment.

     

    Thanks

     

    Martin

  9. Typically I start the tool when I am already inside the viewport, is there a way to tell if I'm already in the viewport?

     

    Or

     

    How do I get a handle to an object as at the beginning of the tool, I haven't drawn anything.

     

    Does my question make sense?

     

    Thanks

     

    Martin

  10. I have a custom plugin that I am using and I would like to know if there is a way to determine if the the plugin is being created inside of a viewport annotation. I have different math depending on where the plug-in is used.

     

    Thanks

     

    Martin

  11. Hi

     

    I have successfully (only with help from the smart folks on the forum) to select a bunch of object, then create (3) sheet layers for each object. I finally got it working, and now I have a few cleanup details left.

     

    1) How can I force a complete redraw of the  layer after the title block is placed. It does not appear in the correct location and I have tired everything to try and make it work.

    • ResetObject
    • ReDrawAll
    • ReDraw
    • ResetObject(layer)

     

    Nothing seems to make any difference at all, except when the script is done running everything pops into place.

     

    What I trying to accomplish is place the title block on the page, get it to reset correctly. Inside the tile block there are a number of loci that control where I would like my viewport in the drawing and help me determine the best viewport scale.

     

     

    2)When creating the sheet layer, I add a title block. When the scripts ends, the field Total Num Sheets is incorrect, it needs to be reset. Is there a way to force a reset of the tile block so the value is correct.

     

    Thanks

     

    Martin

  12. I finally got it working. I'm not sure why, however a ResetObject was needed after the layers and classes were turned on.

     

    Thanks for pointing me the right direction. For some reason this was tough to get working.

     

    Again, Thanks!

     

    Martin

     

  13. Wow!

     

    Nice reference! Not related, but a long time ago I have a VW bug. I found a book on VW repair. This book was so well done that at 14  I rebuilt the engine one a 1969 classic VW. It ran for years. I wish I had the same book for VW & Python scripting. Every step seems like a slugfest.  I've been banging my head against the wall all day trying to get viewport centering to work correctly.

     

    Using the following code:

     

    Quote

        for selectedObjects in range(0, len(objectList)):
            vs.Layer(ModuleLayer) # make sure we are on the correct starting layer

            screenName   = objectList[selectedObjects][0] # Gets the Screen Name   - 1st item in t = (screenName,objectHandle)
            objectHandle = objectList[selectedObjects][1] # Gets the Object Handle - 2nd item in t = (screenName,objectHandle)

     

            # Get the object height, width and bounding box of object
            p1, p2       = vs.GetBBox(objectHandle)
            objectWidth  = vs.HWidth(objectHandle)  
            objectHeight = vs.HHeight(objectHandle) 

     

            #Create VP Crop Object
            vs.Rect(p1, p2, objectWidth, objectHeight)
            vpCrop = vs.LNewObj()

     

            # Create the layer and set the layer name
            layerHandle = vs.CreateLayer('01', 2)  # using 01 forces the next unused sheet nubmer to be used
            layerName   = vs.GetLName(layerHandle) # get they layer name. It appears the layer name is the sheet number
            vs.SetObjectVariableString(layerHandle, 159,'Module Layout - ' + screenName)

     

            vs.Rect(0,0,10,10) # test to see if something draws on the sheet layer

     

            #Create the VP and set Crop Object
            vpHandle = vs.CreateVP(layerHandle)
            vs.SetVPCropObject(vpHandle, vpCrop)
            vs.SetObjectVariableReal(vpHandle, 1003, 32) #set scale to a default of 32

            viewPort_X, viewPort_Y = vs.HCenter(vpHandle)
            print(viewPort_X, " ", viewPort_Y)

     

        vs.ReDrawAll()


     

     

     

    viewPort_X and viewPort Y are always 0.

     

    What is super strange, is when I run the script it leaves me on the last sheet layer created and I can see a viewport created at 0,0 (with a red x through it). If I change sheet layers and change back, the viewport shows up in the wrong location. You can see the two attached screen shots to see what I am talking about.

     

    I've tried adding ReDraw and ReDrawAll in multiple points in the code and it makes no difference. I'm using 2108 sp3.

     

    It seems like some type of reset or redraw is required after the VP is created or maybe after the crop is set.

     

    Any thoughts?

     

    Martin

     

     

     

    Screen Shot 2018-05-16 at 4.12.25 PM.png

    Screen Shot 2018-05-16 at 4.11.51 PM.png

  14. MullinRJ

     

    How do you know they are read only?

     

    When I look at the appendix I see the following:

    Scale                           1003 REAL ObjectVariableReal

    Viewport x Position  1024 REAL  ObjectVariableReal

    Viewport x Position  1025 REAL  ObjectVariableReal

     

    I don't see anything that would indicate 1024 and 1025 are read only. Where do you find that nugget of information.

     

    Thanks

     

     

  15. This makes perfect sense. Thanks!

     

    I still don't fully "Grok" the Vectorworks API. Sometimes things are straight forward and other times it seems convoluted. I will keep working at this and hopefully one day I will be able to answer a few questions.

     

    Again, Thanks

     

    Martin

  16. I figured out how to scale a viewport, now I want to position it correctly.

     

    The following works:

            vs.SetObjectVariableReal(vpHandle, 1003, 32) #scale

     

    The following does not work:
            vs.SetObjectVariableReal(vpHandle, 1024, 0) # x
            vs.SetObjectVariableReal(vpHandle, 1025, 0) # y

     

    I get the following error message:

    Error: SetObjectVariable failed with constant 1024. This typically due to the operation being not supported for the passed object handle.

     

    As far as I can tell in the documentation, setting the x and y should be the same as setting the scale. I can't seem to figure out why one works and the other doesn't.

     

    Thanks

     

    Martin

  17. Hi

     

    I am working on a script to automatically create sheet layers, with viewports with layers and classes set correctly. I have figured out how to get the following working:

     

    • Create Sheet Layer
    • Name Sheet Layer
    • Create View Port
    • Set Layer Visibility 
    • Set Class Visibility

     

    When the Viewport is created the scale is set to 1:1, how can I change the viewport scale?

     

    Thanks

     

    Martin

  18. Hi

     

    I am having a strange issue when I try to use Python to create sheet layers. The following code:

                layerName = 'Module Layout - ' + screenName
                vs.CreateLayer(layerName, 2)


    Creates the follwoing:

     

    image.thumb.png.e94819cbb037d1419bdf628aae5eb36a.png

     

    How would I set the Sheet Number and set the Sheet Title of the text in the Sheet Number?

     

    Thanks

     

    Martin

     

×
×
  • Create New...