Jump to content

Vlado

Vectorworks, Inc Employee
  • Posts

    647
  • Joined

  • Last visited

Posts posted by Vlado

  1. @Don Seidel as far as I'm aware, SQLite is working ok. I know you are having an issue which you already are working with an engineer to figure out, and we're having trouble reproducing it on our side. I'm not sure you can blankly state that it's completely not working judging by the conversation on the filed issue.

     

    Is this a new issue? Please file it as a new issue and let us know.

  2. On 11/14/2023 at 9:44 PM, Your Name Here said:

    If it's mission critical, I don't use Laubwerk plants.

     

    This will be fixed in Vectorworks 2023 SP8

     

    The technical description is that the Laubwerk library that we use was fixed and included in Vectorworks 2024 and thoroughly tested a while back. However due to the severity of the problem, we will include it in Vectorworks 2023 SP8. We're spending extra effort to make sure it will be stable in 2023 too.

    • Like 1
  3. @Amanda McDermott @RonMan We've tracked down the slowness to the resource libraries load. It's not really plugin related, it's the loading of the resources DB.

    @Dubman can you delete your user folder, make sure you save you old one so you don't lose something important? Do you see the delay again? If so, please send me the user log files (the VW User Log.txt and VW User Log Sent.txt -- let me know if you cannot find them) @Hugues see the post above.

    • Like 1
  4. @RonMan do you mind trying to delete the file /tmp/DebugModule_5.txt from your machine, and try running again with the Debut Module in?

    You can go there by opening a finder window, then from the menu Go -> Go to Folder..., then type /tmp, the folder will open and there should be a file DebugModule_5.txt.

     

    Is there? If yes, delete it and try again. Close Vectorworks and run it again. This file is used to cash flags and optimize the DebugModule, so it doesn't do extra work on startup. So you'll see it show up, and then it should be faster, if that's the reason.

     

    Note, please don't rely on the Splash screen, it's not necessarily synced to what's actually happening. The real test is to remove the DebugModule plugin from the Plugins folder, and see it becoming faster.

     

    Thank you for you testing!

  5. 15 hours ago, Letti R said:

    so i finished my Plug-in. Now i want to put it in the Forums to share it (for free). Is there something i have to consider to not run into legal problems because i used the VW SDK, or can i just put it out there for others to use?

    @Letti R we have nowadays the Partner Install feature, that allows users to install/add on features developed by third-parties. Send me an email to vstanev@vectorworks.net and I'll forward it to the correct people for that.

  6. Hi @Timothy Besada, this is an interesting question, but at the moment we do not provide anything for the Python Scripting that can work with the Web Palette.

    Only the SDK is capable to provide a web-palette. You can find an example how to make such palette here: https://github.com/VectorworksDeveloper/SDKExamples (this is self contained project, so you should be able to compile it directly)

     

    The base of the web-palette implementation is the two sides:
    - back-end -- which is essentially the C++ plugin. It is the browser, it can add JavaScript code, a.k.a. insert JS functions for the webpages to use, and also to implement JS functions. This way, the page [the front-end] can call into Vectorworks and get data.

    - front-end -- this can be an external site, or locally implemented [as the example shows, using VueJS]. This would use the JS functions provided by the back-end.

     

    Python cannot participate in this at the moment. I guess you can simulate by exposing Script functions [IExtensionVSFunctions] in your back-end, and thus delegate a JS implementation, but I think that would not be very efficient, plus you'll need to store state somewhere, between the calls in Python. I would not recommend going down this way.

     

    Unfortunately, the SDK is your only way to do your own web-palette.

     

    Regards,

    Vlado

     

  7. 12 hours ago, Amanda McDermott said:

    Tempted to try this - can anyone from Vwx advise on whether this is a good idea?!

    The DebugModule plugin is a set of tools for third-party development. It has no effect on the features of the application. Vectorworks would work ok without it, unless you want to enable the dev features, from the Partner Install menu.

    I would rather get to the bottom of why this is a problem, than to advise everyone to delete it. We'll look at what's going on with this.

    • Like 2
  8. @MarcusBIMBOT this looks like you are using the examples provided with the SDK. Unfortunately, those are not in good shape.

    Use the Github examples, there are in much better state.

     

    Go to https://github.com/VectorworksDeveloper/SDKExamples

    Download the entire repo, it is self contained, already setup to compile directly.

     

    Then try to compile the project:

    SDKExamples\Examples\ObjectExample\ObjectExample2023.sln

     

    We use Visual Studio 2017 for that version, but I guess the build tools are what you need.

     

    It should just compile.

     

    Let me know if you struggle, I'll be glad to help you. Sent me an email at:

    vstanev@vectorworks.net

     

    Regards,

    Vlado

     

  9. 2 hours ago, MarcusBIMBOT said:

    I just grabbed this project (2023 version) from github and can't get it to build.  I'm having trouble with vwsdk.dll debug version

     

    Hi @MarcusBIMBOT, which project from the examples are you trying to build?

    The depot is setup so you take the entire thing, and open the appropriate solution file for the version you want to use.

  10. Hey @Pat Stanford, @J P, and all,

     

    The root of the problem is that the available object variables are only for styles, and in this case you just have a wall. So, the way you get out data from the wall [nowadays] is via QTO functions, in this case it's =ObjectData('fire rating') 

    Here is the modified script that executes the QTO function on the wall in the script:
    Note: you must do it via a string variable, for EvalStr to work property. It cannot work with direct string as parameter

     

    Procedure WallFireRatingForDoor;
    
    {August 8, 2023}
    {February 25,2022}
    2023, 2022 Patrick Stanford pat@coviana.com}
    {Licensed under the GNU Lesser General Public License}
    {No warranty expressed or implied. Use at your own risk}
    {Test before useing on real data}
    
    VAR	H1, H2	:Handle;
    	R1		:Real;
    	B1		:Boolean;
    	S1, EXP	:String;
    	
    BEGIN
    	H1:=WSScript_GetObject;
    	H2:=GetParent(H1);
    	If GetType(H2)<>68 then 
    		WSScript_SetResStr('---')
    	Else
    		BEGIN
    			EXP := 'ObjectData(''fire rating'')';
    			S1:=EvalStr(H2, EXP); {Execute the Worksheet formula expression on the given handle}
    			WSScript_SetResStr(S1);
    		End;
    End;
    
    Run(WallFireRatingForDoor);

     

    • Like 4
  11. Also you might be better off using Python as a language instead of Pascal. It's just more modern syntax and it has the exact same functions available anyway.

     

    Also, it might be easier to use the Dialog Builder to create the Layout (#1 above) as it gives you a way to test and fine tune the layout, especially when it becomes more comples:

    https://developer.vectorworks.net/index.php/SDK:Dialog_Builder

     

    Here is some basic information on the dialog builder:

    https://developer.vectorworks.net/index.php/SDK:Dialog_Builder_Samples

     

     

    • Like 3
  12. Some explanations:
    First, a Layout Manager dialog in Vectorworks is composed of two parts:

    1. Creation -- code that creates the controls and their layout by defining what lies below or to the right;

    2. Handling -- code that defines what the dialog does, i.e. receives messages from the controls

     

    So typically, you'll have two functions for the two parts, and typically you'll have constants for the variables so you can follow the two parts easier. You can see, the example above catches the event from the OK button (which has always index of 1) and retrieves the values from the controls.


    Note, here you used Real control, but maybe it would be better to use a 'dimension' control, which is aware of units. Notice how the edit control has a type of what the real value actually is: https://developer.vectorworks.net/index.php/VS:CreateEditReal

     

    Also see here for another example:

    https://developer.vectorworks.net/index.php/VS:RunLayoutDialog

    • Like 3
  13. @JoshRula Here is your code, modified, working to show how to get two values out from the dialog on OK:

     

    {CABINET BUILDER V0.1}
    PROCEDURE CabinetBuilder;
    CONST 
    	kRealType = 1;
    	kDimType = 3;
    VAR
    	dialogID : LONGINT;
    	width, height : REAL; {dialog data}
    	
    	FUNCTION CreateDialog : LONGINT;
    	VAR
    		builderDialog:LONGINT;
    
    	BEGIN
    		builderDialog:=CreateLayout('Cabient Builder',false,'Build','Exit');
    
    
    		CreateStaticText( builderDialog ,1,'CABINET BUILDER V0.1',-1);
    		SetFirstLayoutItem( builderDialog , 1);
    
    
    		{ **********  TAB CONTROL ********** }
    
    		{ Tab Group 1}
    		CreateGroupBox(builderDialog , 5 , 'Cabinet Specs' , FALSE);
    
    
    		CreateStaticText(builderDialog , 6, 'WIDTH',8);
    		SetFirstGroupItem(builderDialog ,5,6);
    
    		CreateEditReal(builderDialog, 7, kRealType, 0, 4);
    		SetRightItem(builderDialog , 6,7,0,0);
    
    		CreateStaticText(builderDialog , 8, 'HEIGHT',8);
    		SetBelowItem(builderDialog , 6,8,0,0);
    
    		CreateEditReal( builderDialog , 9, kRealType, 0, 4);
    		SetRightItem(builderDialog , 8,9,0,0);
    
    		CreateStaticText(builderDialog , 10, 'DEPTH',8);
    		SetBelowItem(builderDialog , 8,10,0,0);
    
    		CreateEditReal( builderDialog , 11, 1, 0, 4);
    		SetRightItem(builderDialog , 10,11,0,0);
    
    		CreateStaticText(builderDialog , 12, 'KICK',8);
    		SetBelowItem(builderDialog , 10,12,0,0);
    
    		CreateEditReal( builderDialog , 13, 1, 0, 4);
    		SetRightItem(builderDialog , 12,13,0,0);
    
    		CreateStaticText(builderDialog , 14, 'DOOR(S)',8);
    		SetBelowItem(builderDialog , 12 ,14,0,0);
    
    		CreateEditInteger( builderDialog , 15, 2, 3);
    		SetRightItem(builderDialog , 14,15,0,0);
    
    
    		{Tab Group 2}
    
    		CreateGroupBox(builderDialog , 16 , 'Material Specs' , FALSE);
    
    
    		CreateStaticText(builderDialog , 17, 'Material Thickness',8);
    		SetFirstGroupItem(builderDialog ,16,17);
    
    		CreateEditReal(builderDialog, 18, 3, 19mm, 8);
    		SetRightItem(builderDialog , 17,18,0,0);
    
    		CreateStaticText(builderDialog , 19, 'Laminate Thickness',8);
    		SetBelowItem(builderDialog , 17,19,0,0);
    
    		CreateEditReal( builderDialog , 20, 3, 0.039", 8);
    		SetRightItem(builderDialog , 19,20,0,0);
    
    		CreateStaticText(builderDialog , 21, 'Kick Set Back',8);
    		SetBelowItem(builderDialog , 19,21,0,0);
    
    		CreateEditReal( builderDialog , 22, 3, 4", 8);
    		SetRightItem(builderDialog , 21,22,0,0);
    
    		CreateStaticText(builderDialog , 23, 'Door Gap',8);
    		SetBelowItem(builderDialog , 21,23,0,0);
    
    		CreateEditReal( builderDialog , 24, 3, 0.125, 8);
    		SetRightItem(builderDialog , 23,24,0,0);
    
    
    		{ Create tab control }
    		CreateTabControl( builderDialog , 100);
    		SetBelowItem( builderDialog , 1, 100, 0, 0);
    
    		{ Add the tab panes }
    		CreateTabPane( builderDialog , 100, 5);
    		CreateTabPane( builderDialog , 100, 16);
    
    		CreateDialog := builderDialog;
    	END;
    
    
    	PROCEDURE HandleDialog(VAR item : LONGINT; data :LONGINT);
    	VAR ok : BOOLEAN;
    	BEGIN
    		IF item = 1 {OK button} THEN BEGIN 
    			ok := GetEditReal( dialogID, 7, kRealType, width );
    			ok := GetEditReal( dialogID, 9, kRealType, height );
    		END;
    	END;
    	
    BEGIN
    	dialogID := CreateDialog;
    	IF RunLayoutDialog(dialogID,HandleDialog) = 1 {OK} THEN BEGIN
    		{ the dialog was closed with ok}
    		AlrtDialog( Concat( 'Width=', width, ' Height=', height ) );
    	END;
    END;
    RUN(CabinetBuilder);

     

    • Like 1
  14. 3 hours ago, twk said:

    After all that testing, all I had to do was make sure that my custom workspace had these particular tools 'unstacked'. Ie not nested under another tool.

     

    Oh wow, I haven't heard about this. Can you enter a JIRA with your workspace file that causes this? I wasn't able to reproduce it immediately.

    or you can send me the file over to vstanev@vectorworks.net, and I'll file it, to get fixed

    • Like 1
  15. @Danilo there is this power user script function available, that can help you mass edit plant styles in a drawing. It has a UI but it might not be "easy" to use as it's not really a feature, but more a power tool.

     

    You can give it a try to see if it will work for you at all, but. be careful as it's not official feature. The plan is to make this a user feature in the future.

     

    Make a document script and type in the following VectorScript:

    MassEditPlantStyle('');

     

     

    • Love 1
  16. 4 hours ago, Kaare Baekgaard said:

    I am somewhat surprised, that you would not immediately know the difference between true beziers and the much more rudimentary Vectorworks variety.

    https://i.stack.imgur.com/i8iTd.gif

    @Kaare Baekgaard I might be misunderstanding it, but this animation looks like edit convenience. Both nurbs are standard (rudimentary) besier [from what I can see] but the mode allows editing the two curve vertices around a corner vertex at the same time, giving you the chance to preserve smoothness through the corner vertex. But I do understand that this is a convenience, that would be nice to add to our tool too.

     

     

×
×
  • Create New...