Jump to content

Incremental attribute edit by like values


scottE

Recommended Posts

I have been searching the forums to find a Lisp routine that would work for me and a lot have come close but they all are missing one thing and that is to number like attributes the same. What I'm trying to do is when I have a bunch of part tag blocks on my drawings I will have input information such as die#, length, direction, etc., which I extract later. What I want is to add a incremental suffix to my die# (ex. 1003-01, 1003-02) that changes only when the other attributes or properties change in that block. Is there a way to do this? If need be I can provide an example drawing that has the block and shows what I'm doing.

Link to comment
Share on other sites

I think this could be achieved, but the numbering would be randomised (depending upon how the program is coded).

 

A sample drawing is always helpful :)

Link to comment
Share on other sites

As Lee is suggesting the block would be found from the database in the order they have been created and would have no relevance to where they are drawn. If you pick the blocks then you could number in order.

 

The other way would be number them as you go and check for the last number as you create the block. ie use lisp to insert block.

Link to comment
Share on other sites

I'm not concerned if it numbers it randomly. The thing I'm looking for is that it numbers the same parts the same. As you can see on my attached drawing that I have multiple horizontals in my frame but the two "1003" parts are the same part, but the verticals are different. This is just a simple version of what I might be dealing with, except hundreds of these frames all different sizes. I'm looking for a routine that will add "-01" to the "1003" in increments in any order.

EXAMPLE 1.dwg

Link to comment
Share on other sites

Hmmm.. this may be more difficult than first expected. The labels are blocks with attributes, but the beams themselves are just LWPOLYLINEs, so the hard part would be telling the program which beam to pair up with each label, and bear in mind that all the beams and labels will be in the set at random...

Link to comment
Share on other sites

I think if you could tie the "Beams" with the labels, that would be really awesome, but I'm currently just simply linking by DLO attributes to the dimensions with INSERT FIELD, OBJECT. This is more of a manual input but its nice because is allows me to change the fame size and update to get the new measurement automatically. All I should really need is a command that allows me to add a suffix to my part# to differentiate between parts.

Link to comment
Share on other sites

Hi Scott,

 

I have thought about this one a lot more, and tried to make the program as concise as possible - hence it may be a bit complicated to follow. But it should do the job.

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:tagupd  [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] i doc ss lst[b][color=RED])[/color][/b]
 [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] i [b][color=#009900]0[/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=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=#ff00ff]"_X"[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#ff00ff]"INSERT"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=#009900]66[/color][/b] . [b][color=#009900]1[/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]progn[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]vla-StartUndoMark[/color][/b] doc[b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/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]x [b][color=BLUE]/[/color][/b] y[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] y [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] x[b][color=RED])[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst [b][color=RED]([/color][/b][b][color=BLUE]subst[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]append[/color][/b] y [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b] y lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] x lst[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]mapcar[/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]x[b][color=RED])[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]vla-get-TextString[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] x[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]mapcar[/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]x[b][color=RED])[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if-not[/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]y[b][color=RED])[/color][/b]
                     [b][color=RED]([/color][/b][b][color=BLUE]vl-position[/color][/b]
                       [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b]
                         [b][color=RED]([/color][/b][b][color=BLUE]vla-get-TagString[/color][/b] y[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
                           [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"PART#"[/color][/b] [b][color=#ff00ff]"LENGTH"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
                  [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/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]x[b][color=RED])[/color][/b]
                        [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b]
                          [b][color=RED]([/color][/b][b][color=BLUE]vlax-variant-value[/color][/b]
                            [b][color=RED]([/color][/b][b][color=BLUE]vla-GetAttributes[/color][/b] x[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]vl-remove-if-not[/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]x[b][color=RED])[/color][/b]
                          [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-EffectiveName[/color][/b] x[b][color=RED])[/color][/b] [b][color=#ff00ff]"PART MARK2"[/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]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b]
                            [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b]
                                    [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[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=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] sze [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cdr[/color][/b] lst[b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] i [b][color=RED]([/color][/b][b][color=BLUE]1+[/color][/b] i[b][color=RED])[/color][/b] j
         [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strlen[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]itoa[/color][/b] i[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]chr[/color][/b] [b][color=#009900]48[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]""[/color][/b][b][color=RED])[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]itoa[/color][/b] i[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/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]x[b][color=RED])[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]vla-put-TextString[/color][/b] x
               [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b]
                 [b][color=RED]([/color][/b][b][color=BLUE]vla-get-TextString[/color][/b] x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]chr[/color][/b] [b][color=#009900]45[/color][/b][b][color=RED])[/color][/b] j[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] sze[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]vla-EndUndoMark[/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]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

Link to comment
Share on other sites

Lee,

Very cool!! but your right, it is extremely difficult to follow. The one thing I have been trying to figure out though is why it only compares the LENGTH? How can I make it compare all the other attributes?

Link to comment
Share on other sites

Lee,

Very cool!! but your right, it is extremely difficult to follow. The one thing I have been trying to figure out though is why it only compares the LENGTH? How can I make it compare all the other attributes?

 

I initially thought you only wanted it to compare the LENGTH attribute as some of the blocks only have this and an empty "NOTE" attribute...

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...