Jump to content

Raph

Member
  • Posts

    48
  • Joined

  • Last visited

Posts posted by Raph

  1. 27 minutes ago, Raph said:

    Hello,

     

    thanks for the answer i'll try this option

     

    Raph

     

     

     

    2 hours ago, JBenghiat said:

    You need to use HMove3D() to set the height after inserting the symbol 

    Hello,

     

    so i tried to find the function but without success

    do you have a description of the function? HMove3D

     

    image.png.a3cd9471afc92f6ed234a562f1b172fa.png

  2. 1 hour ago, Ramon PG said:

    You can better during symbol creation raise it to the final AFF level you wish and it will insert accordingly.

    Hello,


    Thanks for the feedback but I'm not sure I understand...

    The symbol exists, I just call it up and place it on the drawing.

    The problem is that I can place it in 2D (X,Y axis) but not on the Z axis

     

     

  3. Hello,


    I'm creating a scrip that calculates and places symbols according to a precise scheme.

    The idea is to draw a frame with symbols that already exist.

    With the function:

    vs.Symbol(symbolName, p, rotationAngle)

    I can place the symbol at 0 on the Z axis

    I'd like to be able to place or translate the symbol, for example, 2 meters away with the opposite side down.


    Any ideas on how to do this?

     

    the parametric symbol is on the left what I'd like to achieve is on the right


    Thanks in advance

    image.thumb.png.29ef3d86c203e4abecdeff52b2d0f209.png

     

    ParamSymbol_Textil_Molto_v1.4.vwx

  4. Hello everyone,

     

    I have a code with the possibility of creating a worksheet.

    It works great! but...
    Each time the code is executed, it generates a new table.

    Would it be possible to make a code that rewrites the existing table?

    I use the following code to create the worksheet:

     

    WSH = vs.CreateWS(vs.Concat(S1,' ',vs.Date(2,0)),N1+3,3)

     

    Thank you for your feedback

  5. Hi Pat,

    Thank you for your answer

    it's always a pleasure to see that there are people interested to help find solutions.


    I tried to make the code with the second option "Push and Pop"

    But the result is not what I expected.

    Once the reading passed through these lines the color changes for all the rest of the code

    The beginning is in blue then it is black whereas I would like red

    See printscreen

     

    Thanks in advance

     

    Capture_03_03_2023_082204.thumb.png.1f213c34e94de748cd58fb855df5adba.png

     

    # Write a list of pannels
    p = (FX2 + 1000, FY2-SpaceLine)
    vs.MoveTo(p)
    txt = vs.Concat('Panneau n°', str(NP), ': ', vs.Num2Str(0,(CurrentX+W1)-CurrentX),'x', vs.Num2Str(0,min(CurrentY + H1, FY2)-CurrentY),'mm')
    vs.PushAttrs
    vs.PenFore(255, 0, 0)
    vs.CreateText(txt)
    vs.PopAttrs

     

  6. Hi veryone,

     

    I tested and here is a video where the symbol disappears (1:26)

    https://kdrive.infomaniak.com/app/share/117888/bcaff1b6-45f6-4e0a-8865-a7676ce7085f
    In this case it's not so bad because by editing the Marionette network the symbol is recomposed.

    This is still problematic because in the office where I work my colleagues are not as interested as I am.

    They will probably tell me that it's bad and that it doesn't work.

     

    @DomC

    I just installed SP3 this morning


    I will do a small study to know more precisely when these parametric symbols disintegrate.
    Thanks for your feedback, I appreciate very much to exchange on these subjects
    greetings

     

    Raph

     

     

     

  7. 56 minutes ago, PatW said:

    Hi PAtW,

     

    Thanks for your answer

    the function you mention returns the RGB value of each color (return (red, green, blue))

     

    In my case I would like to be able to define the color of the text I write

    I tried with the function : vs.PenFore(color)

    But with no positive result since it changes the color of everything that follows in the code

     

    Maybe a more suitable solution exists?

  8. Hello Everybody,

     

    In an existing script I would like to change the color of some texts.


    for the moment the color is the one of the active class

    I would like to be able to define the color when creating a text

     

    vs.CreateText(myText)

     

    Thank you in advance

     

    salutations

     

    Raph

  9. On 2/6/2023 at 12:21 PM, Stephan Moenninghoff said:

    I tried really hard to break it but couldn't.

    Here's what I did:

    Rotated the Marionette Object

    Removed style and rotated

    Created a new style from the unstyled object

    Rotated

    Everything looks good. Do you have any steps to reproduce? Maybe a short movie?

    Thanks

     

    Hi Stephan,


    Thank you for your tests

    Did you try to take the symbol from my file and move it to a new file or an existing file of yours?

    We are working with a library of symbols that we have created with our own resources.

    The problems appear when moving these symbols from the library to our new plan.


    Thanks in advance

    greetings

     

    Raph

  10. 22 hours ago, Stephan Moenninghoff said:

    Do you mean a Marionette object when you say 'parametric symbol'?

    I wanted to have a look at your file but it seems like the file is already broken. Do you have one that is still intact?

    Hi Stephan,


    Yes it is a Marionette object in a symbol.

    The object is first created with Marionette and then I created a symbol with it.

    When creating the symbol there is an option to compile it in "parametric" mode


    In fact by importing it from the library on the current drawing and after a modification (rotation, dimension parameter, etc) the symbol disappears.

    I have to go to the drawing resources and open the symbol with the edit function.

    And there, if all goes well, it reappears.

    grrr


    I put a symbol here

     

    Symbol_test.vwx

  11. Hi Stephan
    Thanks for your answer

    This will solve the network display problem.

     

    But the basic problem is more annoying.
    in fact each time I import a new parametric symbol, I must to open it and go to the Marionette network.

    Otherwise the symbol remains invisible

    Is there anyone who regularly uses parametric symbols and this happens to them too?
    Is there a solution to this problem?

    Thanks

  12. Hello everyone,


    I have recently created a series of parametric symbols to make walls, see attached file.


    Unfortunately, when I want to rotate (90°, 180°, 270°) these symbols Vectorworks does not like it.

    The program crashes or the Marionette network disconnects and becomes invisible.


    Has anyone encountered this problem before?

    How to solve this dilemma?


    Thank you in advance for your feedback

    Best regards

    Raph

    Pan_ParamSymb_VW2022.vwx Pan_ParamSymb_VW2023.vwx

  13. Hello,

     

    Well.... I have made good progress

    I'm just blocked to finish the Y loop

    by changing the parameter "max" in "min" the loop runs without end, I think since VW crashes.

     

    Does anyone have an idea?
    Pat? I know that Python is not your favorite field but you have more experience than me😉

     

    I tried to put a "if" SheetEndX > FX2 Do SheetEndX = FX2

    but nothing works!!!

     

    file and printscreen attached

    Kind regards

     

    image.png.39d35aa6d77c5e53dbe163992cde2f41.png

     

    TileRectsFloor_v5.vwx

  14. Hi Pat,


    Thanks for your answers and your time

    It was very helpful.


    I think I'm not too far from success. missing me 1-2 hour

    Attached is a picture of my Marionette network.

    It gives an idea of what I want to be able to set up.


    I have adapted the code a bit as I thought

     


    My code below:

    # November 11, 2022
    # ©2022 Patrick Stanford pat@coviana.com
    # Licensed under the GNU Lesser General Public License
    
    # No Warranty Expressed of Implied. Use at your own risk.
    # Very limited testing.
    # Tiles a rectangular area with a set of rectangles
    # the beginning of each row is the "cutoff" from the
    # end of the row above.
    
    # Modified by Raph_N November 17, 2022
    # added two parameters:
    # 1. a deduction in the remaining panel of the thickness of the blade (ThBl:4mm)
    # 2. a minimum dimension at the end of a line that allows to decide if the line starts with a new panel (WmaxSold:200mm)
    
    
    @Marionette.NodeDefinition
    class Params(metaclass=Marionette.OrderedClass):
    	# APPEARANCE
    	# Name
    	this = Marionette.Node("TileRects_OSB")
    	this.SetDescription(
    		'This node performs a tiles a rectangular area with a set of rectangles the beginning of each row is the "cutoff" from the end of the row above.')
    
    	# Input Ports
    	in0 = Marionette.PortIn(vs.Handle(0), 'hObj1')
    	in0.SetDescription('A list of objects to be operated on (blanks)')
    
    	inWf = Marionette.PortIn(1, 'n_Wfloor')
    	inWf.SetDescription('A dimension of the width (Pannels)')
    	inHf = Marionette.PortIn(1, 'n_Hfloor')
    	inHf.SetDescription('A dimension of the height (Pannels)')
    
    	inWp = Marionette.PortIn(1, 'n_Wpan')
    	inWp.SetDescription('A dimension of the width (Pannels)')
    	inHp = Marionette.PortIn(1, 'n_Hpan')
    	inHp.SetDescription('A dimension of the height (Pannels)')
    
    	inThBl = Marionette.PortIn(1, 'nBlade')
    	inThBl.SetDescription('A dimension with a thickness of a (Blade)')
    
    	# Output Ports
    	out = Marionette.PortOut('hObj')
    	out.SetDescription('The resulting objects')
    
    
    # BEHAVIOR
    # this.SetLinksObjects()
    # this.SetListAbsorb()
    
    
    def RunNode(self):
    	# inputs
    	FX2 = self.Params.inWf.value
    	FY2 = self.Params.inHf.value
    	W1 = self.Params.inWp.value
    	H1 = self.Params.inHp.value
    	ThBl = self.Params.inThBl.value
    
    	# script
    	in0 = vs.FSActLayer()
    
    	if in0 is not None:
    		FX1 = 0
    		FY1 = 0
    		CurrentX = FX1
    		CurrentY = FY1
    		SheetEndX = FX1 + W1
    		SheetEndY = FY1 + H1
    		RemainderX = 0
    		RemainderY = 0
    		NP = 1
    		NProw = ((FX2-FX1)/W1)
    		WmaxSold = ((FX2-FX1)-(NProw*W1))
    		Done = False
    		NewLine = False
    		
    		vs.Rect(FX1, FY1, FX2, FY2)
    
    		while not Done:
    			RemainderX2 = W1 - WmaxSold
    			NProw = vs.Trunc(((FX2 - FX1) - (W1 - WmaxSold)) / W1)
    			WmaxSold = ((FX2 - FX1) - (NProw * W1) - RemainderX2)
    
    			while SheetEndX <= FX2:
    				if NP != 1 and WmaxSold<200:
    					RemainderX = 0
    					NewLine = True
    
    				else:
    					Number = ((CurrentY - H1), FY2)
    					ThisY = max(Number)
    					vs.Rect(CurrentX, CurrentY, CurrentX + W1, ThisY)
    					CurrentX = CurrentX + W1
    					SheetEndX = CurrentX + W1
    					NP = NP + 1
    
    				RemainderX = W1 - (FX2 - CurrentX) - ThBl
    				vs.Rect(CurrentX, CurrentY, FX2, ThisY)
    				
    
    				if SheetEndX != FX2 and SheetEndY != FY2:
    					if NewLine == True:
    						CurrentX = FX1 + W1
    						NewLine = False
    						NProw = Trunc((FX2 - FX1) / W1)
    						WmaxSold = ((FX2 - FX1) - (NProw * W1))
    
    					else:
    						CurrentX = FX1 + RemainderX
    
    					Number = ((CurrentY - H1), FY2)
    					CurrentY = max(Number)
    					CurrentX = FX1 + RemainderX
    					SheetEndY = max(Number)
    					vs.Rect(FX1, CurrentY, CurrentX, SheetEndY)
    					
    					SheetEndX = CurrentX + W1
    					NP = NP + 1
    
    				else:
    					Done = True
    
    	# outputs
    	

     

    image.thumb.png.d69027aac2e41f38845d9c0d8019940a.png

    TileRectsFloor_v2.vwx

    • Like 1
×
×
  • Create New...