Jump to content

Benedick_Miller

Member
  • Content Count

    23
  • Joined

  • Last visited

Posts posted by Benedick_Miller


  1. Hi Silas,

     

    thanks for trying and replying.

     

    As you say - "in Python this function will NOT block execution. It will execute a callback function with the resulted point" - I did read that but i was hoping there was some way around that.

     

    I'll stick to Vectorscript for now for this tool.

     


  2. Hi,

    Some years ago I wrote a few tools in Vectorscript based on a number stamp. The idea is simple enough: enter a starting number in a dialog, start clicking, the number increments and is "printed" in the drawing on each mouse click. In the actual implementation there is other stuff going on too, but it's just this part I need help with at the moment.

     

    The Vectorscript tools work fine, but now I would like to re-write them in Python, but I can't get it working at all! This is because I am probably too stupid to understand what I need to do, but also it is because of the way GetPt() seems to works in Python. Also I don't get how to use KeyDown() in Python. I am open to any suggestion on how to do this in python in any way it works:

    • Enter a starting number in a dialog
    • Start clicking to add numbers (as text) that increment with each mouse click.

    It seems like this should be simple enough, but I have been trying to get it to work for a while and i can't! Any help would be much appreciated.

     

    Here, below, is a simplified version of my Vectorscript that works fine, and below that one example of how I have tried (and failed miserably) to translate it to Python:

     

    {
    V4
    Simple Number Stamp Tool
    By: Benedick Miller
    Date: 2014-10-06
    }
    
    Procedure SimpleNumberStamp;
    
    	VAR 
    		n,i,keyhit:INTEGER;
    		pt:POINT;
    		t:STRING;				
    
    	BEGIN
    		
    		n:=IntDialog('Enter the starting number','1');
    		IF NOT DidCancel THEN
    		keyhit:=27;
    		i:=1;
    		DSelectAll;
    					
    		while not keydown(keyhit) do
    		
    		begin
    			t:=num2Str(0,n);	
    			getpt(pt.x,pt.y);
    			TextOrigin(pt.x,pt.y);
    			CreateText(t);				
    			n:=n+i;
    			redrawall;
    		end;
    		
    	END;
    
    Run(SimpleNumberStamp);

    And the Python translation:

    # Print Incremental Numbers on each mouse click until [Esc]
    # NOT WORKING!!!
    
    import vs
    
    def label(pt):
    	vs.TextOrigin(pt[0],pt[1])
    	vs.CreateText(str(n))
    	vs.ReDraw()
    	
    def kdwn():
    	k=vs.KeyDown()
    	return k[1]
    
    keyhit = 27
    i = 1
    n = 1
    
    vs.DSelectAll()
    
    n = vs.IntDialog('Enter the starting number', n ) 
    if not vs.DidCancel():
    	while not kdwn() == keyhit:
    		vs.GetPt(label)
    		n = n + i

     


  3. continued...

     

    @DomC - thank for this example, it's really helpful for learning. However there seems to be a mistake in the indenting in your example code, which of course with python is deadly! I got it to work like this:

     

    import codecs
    import os.path
    import os
    
    homeDir = os.path.join(os.path.expanduser("~"))
    Pfad = '{}/Documents/TempVWFiles'.format(homeDir)
    
    FileName=vs.GetFName()
    
    File = homeDir+'/Documents/TempVWFiles/'+'Klassenliste_'+FileName+'.txt'
    
    d = os.path.dirname(Pfad)
    if not os.path.isdir(Pfad):
    	os.mkdir(Pfad)
    
    
    KlassenAnzahl=vs.ClassNum()
    
    f = codecs.open(File, "w", "utf-8")
    x = 1
    while x <= KlassenAnzahl:
    	Klasse = vs.ClassList(x)
    	x= x+1
    	f.write('\''+Klasse+'\''+',')
    
    f.close()
    vs.AlrtDialog('Die Datei wurde an folgende Stelle gespeichert:'+File)
    
    import subprocess
    import sys
    
    path=Pfad
    if sys.platform == 'darwin':
       def openFolder(path):
           subprocess.check_call(['open', '--', path])
    elif sys.platform == 'linux2':
       def openFolder(path):
           subprocess.check_call(['gnome-open', '--', path])
    elif sys.platform == 'win32':
    	def openFolder(path):
    		subprocess.check_call(['explorer', path])
    
    openFolder(path)

     

     

    • Like 1

  4. @twk  the link you posted above no longer works - can you post an updated link?

     

    the original link:

    https://techboard.vectorworks.net/ubbthreads.php?ubb=showflat&amp;Number=220857#Post220857

     

    links to a nice message: "The Vectorworks Community Board has been upgraded with a bunch of great new features and moved to this location. But don’t worry — ALL of the content has been migrated along with it, so anything that was on the old forum is still available for you to use and reference." but a search for #Post220857 just leads me back to this thread, which ain't much use!


  5.  

    Quote

    I just want to mention that if you are familiar with VS, you can really jump into Python with just learning the syntax basics and remembering to add "vs." before every VW API call.... etc.

     

    @JBenghiat this is perhaps the most helpful single post I have seen on the topic of transitioning from VS to Python. Thank you! - could you please get this posted on the first page of the developer wiki : http://developer.vectorworks.net/index.php/Python - which is extremely terse for a beginner.


  6. hi twk,

    thank you very much for this, very helpful. I will try this later. It makes sense.

    Sorry for "dumb" questions - I am trying to teach myself Python at the same time as learning how to use VS code, so I can update my ancient Vectorscript plugins. All the help in this forum is much appreciated.


  7. Hi,

    I am just starting off with python for Vectorworks - I use Visual Studio Code (VS Code) as my IDE on a Mac (MacOS 10.13)  I have downloaded vs.py but I have no idea how to set up VS Code to "see" vs.py for intelli-sense or linting

     

    The instructions: "To help intelli-sense for Vectorworks Python script APIs, you can point your IDE to the file File:Vs.zip (download, unzip, and place it appropriately so the IDE could find it)" don't help me much.

     

    Can anyone explain the steps needed to point VS Code to vs.py (or an alternative)?


  8. Hi Mark,

     

    Thank you. I also got the same answer from Vectorworks Support (Germany). This fixes it.

     

    I have to say: who knew?! Is this a documented feature of Spotlight? I did indeed change the symbol name in the resources manager at some point after creating the lighting position. I have often edited symbol names for symbols I have created, in Vectorworks Fundamentals, and the symbols stay linked to the symbol names. This is the first time I have changed a symbol name for a Spotlight Lighting Position Symbol. There was no warning when I did this. The drawing looked the same until I edited the z height of this position, at which point it just disappeared without any error message or explanation. Now that I know that if I want to change a symbol name for a spotlight object, lighting position, lighting fixture etc. I will need to go to each instance of the symbol and enter the new symbol name in the info palette. Is this really a desired feature of Vectorworks Spotlight? It feels like this goes against the normal behaviour of vectorworks symbols.

     

    • Like 1

  9. I have solved this issue on my system.

    I spoke to Vectorworks Support in Germany - They think the problem was caused by my Vectorworks User Data and Preferences Folder being a Dropbox folder.

     

    However whilst trying to re-set to the default preferences folder - to test the theory - I could not start Vectorworks. In the end I uninstalled Vectorworks (including removing all application support and preference files) downloaded the latest version (SP2) and installed from scratch. Everything is working now. The above mentioned crash does not occur.

     

    Unfortunately I cannot confirm that Dropbox was indeed causing the problem as I couldn't test this. I can pass on that I've been told that the Vectorworks User Data and Preferences Folder should not be a Dropbox folder. Re-installing a clean Vectorworks has fixed the problem.


  10. Hi,

    I am also having this problem. I have submitted a report to Vectorworks Support in Germany. This looks like a serious bug.

     

    I have noticed that one doesn't even need to edit anything in the edit instrument dialog - simply clicking OK after opening the dialog without making any changes will cause my Vectorworks to crash immediately.

     

    Please could you guys give details of your system to compare?

     

    I am using Mac Version Vectorworks Spotlight 2017 SP2

    MacOS 10.12.3

    B-series Dongle

     

    I have tried the attached file on two different Macs - both with the same OS and the crash is immediate.

    LIGHTPLOT_TEST1.vwx


  11. I have similar issues with Vectorworks 2015, not just me but all 6 of us in the office have these issues:

    1. If i change Dongles to a different dongle than the one use for the installation Vectorworks 2015 refuses to start reporting "a dongle was not found... Vectorworks will now quit" ´There is no chance to enter the Serial number for the attached dongle, as there always has been in the past. It's a pain.

    2. Vectorworks 2015 pauses every few minutes, on our macs we get the beach-ball effect. It is not only very annoying it also negatively affects productivity. Hope this gets fixed very soon.

 

7150 Riverwood Drive, Columbia, Maryland 21046, USA   |   Contact Us:   410-290-5114

 

© 2018 Vectorworks, Inc. All Rights Reserved. Vectorworks, Inc. is part of the Nemetschek Group.

×
×
  • Create New...