Jump to content

Activex mtext selection


Commandobill

Recommended Posts

Hey Everyone,

 

Hope you all are having a good weekend. I just started using vl, vla, vlax commands recently and i was wondering if anyone has input on this portion of my code that gets a selection set of all text on a certain layer and changes the height of it.

 

 (defun thight ( / dracula textset textlnth eachname)
 (setq textlnth (sslength (setq textset (ssget "X" (list(cons 0 "*TEXT") (cons 8 "C-ANNO-ROAD"))))))
 (setq dracula 0)
   (repeat textlnth
     (setq eachname (ssname textset dracula))
      (vlax-put-property (vlax-ename->vla-object eachname) "height" 2)
     (setq dracula (1+ dracula))       
     )  
(princ)
 )

 

I guess im trying to find the way to make a selection set with vla. Thanks in advance

Link to comment
Share on other sites

I would approach it like this:

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] thight  [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ss[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]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=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#ff00ff]"*TEXT"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]8[/color][/b] [b][color=#ff00ff]"C-ANNO-ROAD"[/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] Obj  [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=BLUE]vla-put-height[/color][/b] Obj [b][color=#009999]2.0[/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]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

Link to comment
Share on other sites

I'd use a .bat file.

 

your a .bat file. lol

 

Thanks lee. is there another way to get that selection? Know what i mean?

Link to comment
Share on other sites

There is, but you won't like it...

 

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] thight  [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ss fCode fNme[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] ss [b][color=RED]([/color][/b][b][color=BLUE]vla-get-SelectionSets[/color][/b]
            [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=BLUE]vlax-for[/color][/b] sSet ss
   [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-name[/color][/b] sSet[b][color=RED])[/color][/b] [b][color=#ff00ff]"NewSs"[/color][/b][b][color=RED])[/color][/b]
        [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-item[/color][/b] ss [b][color=#ff00ff]"NewSs"[/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-Add[/color][/b] ss [b][color=#ff00ff]"NewSs"[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] fCode [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray-fill[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]vlax-make-safearray[/color][/b]
                 [color=Blue][b]vlax-vbinteger[/b][/color] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]8[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       fNme [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray-fill[/color][/b]
              [b][color=RED]([/color][/b][b][color=BLUE]vlax-make-safearray[/color][/b]
                [color=Blue][b]vlax-vbvariant[/b][/color] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/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=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"*TEXT"[/color][/b] [b][color=#ff00ff]"C-ANNO-ROAD"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ObjSet [b][color=RED]([/color][/b][b][color=BLUE]vla-select[/color][/b] NewSs [color=Blue][b]acSelectionSetAll[/b][/color] [b][color=BLUE]nil[/color][/b] [b][color=BLUE]nil[/color][/b] fCode fNme[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vlax-for[/color][/b] Obj ObjSet
     [b][color=RED]([/color][/b][b][color=BLUE]vla-put-height[/color][/b] Obj [b][color=#009999]2.0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-item[/color][/b] ss [b][color=#ff00ff]"NewSs"[/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

There is, but you won't like it...

 

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] thight  [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ss fCode fNme[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] ss [b][color=RED]([/color][/b][b][color=BLUE]vla-get-SelectionSets[/color][/b]
            [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=BLUE]vlax-for[/color][/b] sSet ss
   [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-name[/color][/b] sSet[b][color=RED])[/color][/b] [b][color=#ff00ff]"NewSs"[/color][/b][b][color=RED])[/color][/b]
        [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-item[/color][/b] ss [b][color=#ff00ff]"NewSs"[/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-Add[/color][/b] ss [b][color=#ff00ff]"NewSs"[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] fCode [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray-fill[/color][/b]
               [b][color=RED]([/color][/b][b][color=BLUE]vlax-make-safearray[/color][/b]
                 [color=Blue][b]vlax-vbinteger[/b][/color] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]8[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       fNme [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray-fill[/color][/b]
              [b][color=RED]([/color][/b][b][color=BLUE]vlax-make-safearray[/color][/b]
                [color=Blue][b]vlax-vbvariant[/b][/color] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/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=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"*TEXT"[/color][/b] [b][color=#ff00ff]"C-ANNO-ROAD"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ObjSet [b][color=RED]([/color][/b][b][color=BLUE]vla-select[/color][/b] NewSs [color=Blue][b]acSelectionSetAll[/b][/color] [b][color=BLUE]nil[/color][/b] [b][color=BLUE]nil[/color][/b] fCode fNme[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vlax-for[/color][/b] Obj ObjSet
     [b][color=RED]([/color][/b][b][color=BLUE]vla-put-height[/color][/b] Obj [b][color=#009999]2.0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-item[/color][/b] ss [b][color=#ff00ff]"NewSs"[/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]

 

lol well nvm ill stick with what i have, Thanks again!

Link to comment
Share on other sites

I thought there was a different way than that. If i remember / figure it out ill post it. VL is fun though. Kinda hard to figure out but fun.

Link to comment
Share on other sites

Hi

 

I translate

(defun thight ( / dracula textset textlnth eachname)
 (setq textlnth (sslength (setq textset (ssget "X" (list(cons 0 "*TEXT") (cons 8 "C-ANNO-ROAD"))))))
 (setq dracula 0)
   (repeat textlnth
     (setq eachname (ssname textset dracula))
      (vlax-put-property (vlax-ename->vla-object eachname) "height" 2)
     (setq dracula (1+ dracula))       
     )  
(princ)
 )

in vl

(defun c:thight(/ sel txt)
 (vl-load-com)
 (and (ssget "X" (list (cons 0 "TEXT,MTEXT") (cons 8 "C-ANNO-ROAD"))) ; Don't use *text because Rtext
   (progn
     (vlax-for txt (setq sel (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))))
   (vla-put-height txt 2)
     )
     (princ (strcat "\nChange " (itoa (vla-get-count sel)) " text."))
     (vla-delete sel)
   )
 )
 (princ)
)

@+

Link to comment
Share on other sites

If you want.

When you use ssget, there are already in activeselectionset and you don't need to create a new selection.

 

Use the selections in vlisp is really hard, especially with the filters when it is so simple with ssget.

 

@+

Link to comment
Share on other sites

I just wanted to show him how to use the selection sets in VL - another option to ssget.

 

Also, I have a question for you -

 

What if you have two selection sets using ssget, how do you operate on these using activeselectionset?

Link to comment
Share on other sites

In this choice, I am compelled to do as you indicated at Commandobill, but honestly, with a filter wise enough, I never needed to work with two selections sets.

 

@+

Link to comment
Share on other sites

Hi

 

; Don't use *text because Rtext

 

 

why wouldnt i want to scale rtext? Even if by chance i made a mistake and put rtext on that layer i would want it scaled... right?

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