Jump to content

Support Path Manipulation


mitchellrodhous

Recommended Posts

Hey!

 

Smal question,

I have the fellowing command in my lisp file:

 

;Start of Command Function
 (command "-insert" "listscharnier" "_non" ip "" "" "0"
   "-insert" "listscharnier" "_non" p6 "" "" "0"
) ;End command

 

now this command let me load an block listscharnier.

The only problem is that I have to load this block first in to my drawing, is it posible to change the command it opens an external block?

 

Thanks MR

Link to comment
Share on other sites

Hi Mitchell,

 

I would be inclined to use something like this:

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] InsertBlock [b][color=RED]([/color][/b] blockname point scale ang [b][color=BLUE]/[/color][/b] doc spc [b][color=RED])[/color][/b]
 [i][color=#990099];; © Lee Mac  ~  14.06.10[/color][/i]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] spc
   [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [color=Blue][b]AcModelSpace[/b][/color]
         [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveSpace[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc
             [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b]
             [b][color=RED])[/color][/b]
           [b][color=RED])[/color][/b]
         [b][color=RED])[/color][/b]
       [b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [color=Blue][b]:vlax-true[/b][/color] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-MSpace[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ModelSpace[/color][/b] doc[b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]vla-get-PaperSpace[/color][/b] doc[b][color=RED])[/color][/b]
   [b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b]
   [b][color=RED]([/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]tblsearch[/color][/b] [b][color=#a52a2a]"BLOCK"[/color][/b] blockname[b][color=RED])[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] blockname
           [b][color=RED]([/color][/b][b][color=BLUE]findfile[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] blockname
               [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-filename-extension[/color][/b] blockname[b][color=RED])[/color][/b]
                 [b][color=#a52a2a]""[/color][/b] [b][color=#a52a2a]".dwg"[/color][/b]
               [b][color=RED])[/color][/b]
             [b][color=RED])[/color][/b]
           [b][color=RED])[/color][/b]
         [b][color=RED])[/color][/b]
       [b][color=RED])[/color][/b]
     [b][color=RED])[/color][/b]
    [b][color=BLUE]nil[/color][/b]
   [b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]vla-insertblock[/color][/b] spc
       [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] point[b][color=RED])[/color][/b] blockname scale scale scale ang
     [b][color=RED])[/color][/b]
   [b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]
[b][color=RED])[/color][/b]
       

Call it in your code like this:

 

[color=Red][b]([/b][/color][color=Blue][b]InsertBlock [/b][/color][color=Green][b]<blockname> <point> <scale> <angle>[/b][/color][b][color=Red])[/color][/b]

 

The code will return a VLA Block Reference Object if successful, else nil.

 

Lee

Link to comment
Share on other sites

Please name your threads to something more specific - everyone that reads this, especiallly in the Customization-forum!

Link to comment
Share on other sites

thanks for reply! probobly it is working only, I would prefer that I can ad an code were he changes the search area's. On this way I can put al my blocks in one folder and get them from that location...

 

Regards MR

Link to comment
Share on other sites

I'm not sure that I understand your post. The code I provided will insert blocks provided either a full path is given, or, failing that, if the block resides in a support path.

Link to comment
Share on other sites

ok, If I use the insert command by using lisp, the program is searchin in standard locations, like I notice below:

 

Insertion Point :
"scharnier.dwg": Can't find file in search path:
 U:\ (current directory)
 C:\Documents and Settings\*****\application data\autodesk\autocad 
2011\r18.1\enu\support\
 C:\program files\autodesk\autocad 2011\support\
 C:\program files\autodesk\autocad 2011\fonts\
 C:\program files\autodesk\autocad 2011\help\
 C:\program files\autodesk\autocad 2011\express\
 C:\program files\autodesk\autocad 2011\support\color\
 C:\Program Files\Autodesk\AutoCAD 2011\drv\
 C:\Program Files\Autodesk\AutoCAD 2011\
*Invalid*
; error: Function cancelled

 

Now I want to add an location to this list so he wil load from a different location;)

 

Regards MR

Link to comment
Share on other sites

I would be perfect to do it with LISP, If I can automatic load it by starting up autocad would also be fine...

 

Regards MR

Link to comment
Share on other sites

Why would you need to do it more than once? Do you mean for difference computers?

 

You could just Go to Tools > Options > Files > Support Paths

 

and change it there, and then it won't change.

Link to comment
Share on other sites

you'r correct, I want add an path under: Tools > Options > Files > Support Paths

Only we using the lisp files with more computer external, so I do not know if it is possebly to create that path to the folder automatic by starting the lisp. So I do not have to create that path on different computers?

Link to comment
Share on other sites

Yes, it can be done:

 

Adding/Removing Support Paths:

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] LM:AddSupportPaths [b][color=RED]([/color][/b] lst [b][color=BLUE]/[/color][/b] PreferenceFiles SupportPaths [b][color=RED])[/color][/b]
 [i][color=#990099];; © Lee Mac  ~  14.06.10[/color][/i]
 [i][color=#990099];; (AddSupportPaths '("C:\\Folder" "C:\\Folder\\Subfolder" ... )[/color][/i]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] SupportPaths
   [b][color=RED]([/color][/b][b][color=BLUE]vla-get-SupportPath[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] PreferenceFiles
       [b][color=RED]([/color][/b][b][color=BLUE]vla-get-files[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]vla-get-preferences[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b]
         [b][color=RED])[/color][/b]
       [b][color=RED])[/color][/b]
     [b][color=RED])[/color][/b]
   [b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]vla-put-SupportPath[/color][/b] PreferenceFiles
   [b][color=RED]([/color][/b]LM:lst->str
     [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] SupportPaths
       [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] s [b][color=RED])[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]vl-string-search[/color][/b] s SupportPaths[b][color=RED])[/color][/b]
           [b][color=RED])[/color][/b]
         [b][color=RED])[/color][/b]
         lst
       [b][color=RED])[/color][/b]
     [b][color=RED])[/color][/b]
     [b][color=#a52a2a]";"[/color][/b]
   [b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]
 lst
[b][color=RED])[/color][/b]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] LM:RemoveSupportPaths [b][color=RED]([/color][/b] lst [b][color=BLUE]/[/color][/b] PreferenceFiles SupportPaths [b][color=RED])[/color][/b]
 [i][color=#990099];; © Lee Mac  ~  14.06.10[/color][/i]
 [i][color=#990099];; (RemoveSupportPaths '("C:\\Folder" "C:\\Folder\\Subfolder" ... )[/color][/i]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] SupportPaths
   [b][color=RED]([/color][/b][b][color=BLUE]vla-get-SupportPath[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] PreferenceFiles
       [b][color=RED]([/color][/b][b][color=BLUE]vla-get-files[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]vla-get-preferences[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b]
         [b][color=RED])[/color][/b]
       [b][color=RED])[/color][/b]
     [b][color=RED])[/color][/b]
   [b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]vla-put-SupportPath[/color][/b] PreferenceFiles
   [b][color=RED]([/color][/b]LM:lst->str
     [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] s [b][color=RED])[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]vl-position[/color][/b] s lst[b][color=RED])[/color][/b]
         [b][color=RED])[/color][/b]
       [b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b]LM:StringParser SupportPaths [b][color=#a52a2a]";"[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED])[/color][/b]
     [b][color=#a52a2a]";"[/color][/b]
   [b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]
 lst
[b][color=RED])[/color][/b]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] LM:lst->str [b][color=RED]([/color][/b] lst del [b][color=RED])[/color][/b]
 [i][color=#990099];; © Lee Mac  ~  14.06.10[/color][/i]
 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] lst[b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] lst[b][color=RED])[/color][/b] del [b][color=RED]([/color][/b]LM:lst->str [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] lst[b][color=RED])[/color][/b] del[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] lst[b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]
[b][color=RED])[/color][/b]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] LM:StringParser [b][color=RED]([/color][/b] str del [color=Blue][b]/[/b][/color] pos [b][color=RED])[/color][/b]
 [i][color=#990099];; © Lee Mac  ~  14.06.10[/color][/i]
 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pos [b][color=RED]([/color][/b][b][color=BLUE]vl-string-search[/color][/b] del str[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]substr[/color][/b] str [b][color=#009900]1[/color][/b] pos[b][color=RED])[/color][/b]
         [b][color=RED]([/color][/b]LM:StringParser [b][color=RED]([/color][/b][b][color=BLUE]substr[/color][/b] str [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] pos [b][color=#009900]1[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strlen[/color][/b] del[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] del[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] str[b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]
[b][color=RED])[/color][/b]

 

Creating a Directory Structure:

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] LM:MakeDirectory [b][color=RED]([/color][/b] dir [b][color=BLUE]/[/color][/b] MakeDirectory folders [b][color=RED])[/color][/b]
 [i][color=#990099];; © Lee Mac  ~  14.06.10[/color][/i]
 [i][color=#990099];; (LM:MakeDirectory "C:\\Folder\\Subfolder")[/color][/i]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] MakeDirectory [b][color=RED]([/color][/b] root folders [b][color=BLUE]/[/color][/b] d [b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] folders
     [b][color=RED]([/color][/b]MakeDirectory
       [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]vl-mkdir[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] d [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] root [b][color=#a52a2a]"\\"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] folders[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
         [b][color=RED])[/color][/b]
         d
       [b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] folders[b][color=RED])[/color][/b]
     [b][color=RED])[/color][/b]
   [b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]
 
 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] folders [b][color=RED]([/color][/b]LM:StringParser dir [b][color=#a52a2a]"\\"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b]MakeDirectory [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] folders[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] folders[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]
[b][color=RED])[/color][/b]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] LM:StringParser [b][color=RED]([/color][/b] str del [b][color=BLUE]/[/color][/b] pos [b][color=RED])[/color][/b]
 [i][color=#990099];; © Lee Mac  ~  14.06.10[/color][/i]
 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pos [b][color=RED]([/color][/b][b][color=BLUE]vl-string-search[/color][/b] del str[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]substr[/color][/b] str [b][color=#009900]1[/color][/b] pos[b][color=RED])[/color][/b]
         [b][color=RED]([/color][/b]LM:StringParser [b][color=RED]([/color][/b][b][color=BLUE]substr[/color][/b] str [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] pos [b][color=#009900]1[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strlen[/color][/b] del[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] del[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] str[b][color=RED])[/color][/b]
 [b][color=RED])[/color][/b]
[b][color=RED])[/color][/b]

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...