Anda di halaman 1dari 5

Making a filtered selection set using Visual LISP (ActiveX functions) - ... https://adndevblog.typepad.com/autocad/2012/05/making-a-filtered-selec...

AutoCAD DevBlog
(https://adndevblog.typepad.com
/autocad/)

05/31/2012
Making a filtered selection set using
Visual LISP (ActiveX functions)
By Balaji Ramamoorthy (https://adndevblog.typepad.com/autocad
/balaji-ramamoorthy.html)
The ActiveX method SelectionSet.Select to create a filtered set of
database objects that meet this criteria:
Block references, such as INSERT entities, and that have extended
entity data that is registered under application name "MYAPP"
The plain AutoLISP expression is: (ssget "X" '((0 . "INSERT") (-3
("MYAPP"))))
Here is the code using the ActiveX call :
(defun c:myappSet ()

(vl-load-com)

(setq loAcad (vlax-get-acad-object)


loDoc (vla-get-activedocument loAcad)
loSelectionSet (vla-add (vla-get-selectionsets loDoc) "filtSet")
)

(setq filtArray (vlax-make-safearray vlax-vbInteger '(0 . 1))


filtVar (vlax-safearray-fill filtArray (list 0 1001))
filtType (vlax-make-variant
filtVar
(logior vlax-vbarray vlax-vbInteger)
)
)

1 of 5 11/11/2018, 6:53 AM
Making a filtered selection set using Visual LISP (ActiveX functions) - ... https://adndevblog.typepad.com/autocad/2012/05/making-a-filtered-selec...

(setq filtArray (vlax-make-safearray vlax-vbVariant '(0 . 1))


filtVar (vlax-safearray-fill filtArray (list "INSERT" "MYAPP"))
filtData (vlax-make-variant
filtVar
(logior vlax-vbarray vlax-vbVariant)
)
)

(vla-select
loSelectionSet
acSelectionSetAll
nil
nil
filtType
filtData
)

(setq count (vla-get-count loSelectionSet))


(princ count)

(setq ssets (vla-get-selectionsets loDoc))


(vla-delete (vla-item ssets "filtSet"))

(princ)
)

It is tempting for a Visual LISP developer to supply list arguments for


the parameters filtType and filtData in the vla-select call, but ActiveX
does not comprehend lists. The filtType parameter requires an array
of integers while filtData is permitted to be a array of variant types.
For a closer examination of safearrays and variants, see the Visual
LISP Developer's Guide. Refer to the section entitled "Converting
AutoLISP Data Types to ActiveX Data Types".
Also, the group code designating xdata is 1001 instead of -3. This is
different, of course, from the Visual LISP approach to filtering xdata,
which makes use of the -3 extended data sentinel rather than group
code.

Posted at 04:17 PM in AutoCAD (https://adndevblog.typepad.com/autocad


/autocad/), Balaji Ramamoorthy (https://adndevblog.typepad.com/autocad/balaji-
ramamoorthy/), LISP (https://adndevblog.typepad.com/autocad/lisp/) | Permalink
(https://adndevblog.typepad.com/autocad/2012/05/making-a-filtered-selection-
set-using-visual-lisp-activex-functions.html)

Comments

2 of 5 11/11/2018, 6:53 AM
Making a filtered selection set using Visual LISP (ActiveX functions) - ... https://adndevblog.typepad.com/autocad/2012/05/making-a-filtered-selec...

Anonymoose said...
I think your sample LISP code contains a bug.
Let's see if you can find it

Reply
05/31/2012 at 08:22 PM (https://adndevblog.typepad.com/autocad/2012/05
/making-a-filtered-selection-set-using-visual-lisp-activex-
functions.html#comment-6a0167607c2431970b0168ebfaa363970c)
Balaji (https://profile.typepad.com/6p016303198bdc970d) said in
reply to Anonymoose...

Fixed. Thanks :)

Reply
06/01/2012 at 08:19 AM (https://adndevblog.typepad.com/autocad/2012/05
/making-a-filtered-selection-set-using-visual-lisp-activex-
functions.html#comment-6a0167607c2431970b016766fd0309970b)
Vinay Kumar said in reply to Balaji (https://profile.typepad.com
/6p016303198bdc970d)...

Hi Brother

How to attach xdata to insert ?

Regards

Reply
12/23/2016 at 02:15 AM (https://adndevblog.typepad.com/autocad/2012/05
/making-a-filtered-selection-set-using-visual-lisp-activex-
functions.html#comment-6a0167607c2431970b01b8d249ca49970c)
Comment below or sign in with Typepad (https://www.typepad.com
/sitelogin?uri=https%3A%2F
%2Fadndevblog.typepad.com%2Fautocad%2F2012%2F05%2Fmaking-a-filtered-
selection-set-using-visual-lisp-activex-functions.html&
fp=71a35f4840ab8e2eb6400309c6a4facd&view_uri=https%3A%2F
%2Fprofile.typepad.com%2F&via=blogside&post_uri=https:
//adndevblog.typepad.com/autocad/2012/05/making-a-filtered-selection-set-
using-visual-lisp-activex-functions.html) Facebook (https://www.typepad.com
/sitelogin?uri=https%3A%2F
%2Fadndevblog.typepad.com%2Fautocad%2F2012%2F05%2Fmaking-a-filtered-
selection-set-using-visual-lisp-activex-functions.html&
fp=71a35f4840ab8e2eb6400309c6a4facd&view_uri=https%3A%2F
%2Fprofile.typepad.com%2F&via=blogside&service=facebook&post_uri=https:
//adndevblog.typepad.com/autocad/2012/05/making-a-filtered-selection-set-
using-visual-lisp-activex-functions.html) Twitter (https://www.typepad.com
/sitelogin?uri=https%3A%2F
%2Fadndevblog.typepad.com%2Fautocad%2F2012%2F05%2Fmaking-a-filtered-

3 of 5 11/11/2018, 6:53 AM
Making a filtered selection set using Visual LISP (ActiveX functions) - ... https://adndevblog.typepad.com/autocad/2012/05/making-a-filtered-selec...

selection-set-using-visual-lisp-activex-functions.html&
fp=71a35f4840ab8e2eb6400309c6a4facd&view_uri=https%3A%2F
%2Fprofile.typepad.com%2F&via=blogside&service=twitter&post_uri=https:
//adndevblog.typepad.com/autocad/2012/05/making-a-filtered-selection-set-
using-visual-lisp-activex-functions.html) Google+ (https://www.typepad.com
/sitelogin?uri=https%3A%2F
%2Fadndevblog.typepad.com%2Fautocad%2F2012%2F05%2Fmaking-a-filtered-
selection-set-using-visual-lisp-activex-functions.html&
fp=71a35f4840ab8e2eb6400309c6a4facd&view_uri=https%3A%2F
%2Fprofile.typepad.com%2F&via=blogside&service=gplus&post_uri=https:
//adndevblog.typepad.com/autocad/2012/05/making-a-filtered-selection-set-
using-visual-lisp-activex-functions.html) and more... (https://www.typepad.com
/sitelogin?uri=https%3A%2F
%2Fadndevblog.typepad.com%2Fautocad%2F2012%2F05%2Fmaking-a-filtered-
selection-set-using-visual-lisp-activex-functions.html&
fp=71a35f4840ab8e2eb6400309c6a4facd&view_uri=https%3A%2F
%2Fprofile.typepad.com%2F&via=blogside&service=openid&post_uri=https:
//adndevblog.typepad.com/autocad/2012/05/making-a-filtered-selection-set-
using-visual-lisp-activex-functions.html)

(You can use HTML tags like <b> <i> and <ul> to style your text. URLs automatically linked.)

Email address is not displayed with comment.

(https://www.typepad.com/)

4 of 5 11/11/2018, 6:53 AM
Making a filtered selection set using Visual LISP (ActiveX functions) - ... https://adndevblog.typepad.com/autocad/2012/05/making-a-filtered-selec...

AutoCAD DevBlog (https://adndevblog.typepad.com/autocad/)

5 of 5 11/11/2018, 6:53 AM

Anda mungkin juga menyukai