找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 918|回复: 5

[已解决] 求大神相助用select创建选择集,提示错误参数点无效

[复制链接]

已领礼包: 2个

财富等级: 恭喜发财

发表于 2020-5-11 12:32:11 | 显示全部楼层 |阅读模式
悬赏20D豆已解决
本帖最后由 yigexinren 于 2020-5-11 12:43 编辑

求大神相助用select创建选择集,提示错误参数点无效,太难啊, 代码如下

(setq ss_collection (Vlax-Get (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument) 'SelectionSets))

   (vlax-for sset ss_collection
  (if (= "sset" (vlax-get sset 'name)) (vlax-invoke sset 'delete))
   )
   (setq ss_cc (vlax-invoke ss_collection 'add "sset"))
  
   (setq sa1 (vlax-make-safearray vlax-vbdouble '(0 . 2)))
   (setq sa2 (vlax-make-safearray vlax-vbdouble '(0 . 2)))
  (setq sa1 (vlax-safearray-fill sa1 (car area)))
   (setq sa2 (vlax-safearray-fill sa2 (cadr area)))
   (setq sa1 (vlax-make-variant sa1))
   (setq sa2 (vlax-make-variant sa2))
   (Vlax-Invoke-Method (Vlax-Get doc 'Application) 'ZoomAll )
   (vlax-invoke ss_cc 'Select 'acSelectionSetCrossing sa1 sa2)
错误提示.png

最佳答案

查看完整内容

给你个例子 select方法 VBA: object.Select Mode [, Point1] [, Point2] [, FilterType, FilterData] object Type: SelectionSet The object this method applies to. Mode Access: Input-only Type: AcSelect enum [*]acSelectionSetWindow [*]acSelectionSetCrossing [*]acSelectionSetPrevious [*]acSelectionSetLast [*]acSelectionSetAll Point1 Access: Input-only; optional Type: Variant (three-element arra ...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 20个

财富等级: 恭喜发财

发表于 2020-5-11 12:32:12 | 显示全部楼层
本帖最后由 marting 于 2020-5-11 21:18 编辑

给你个例子

  1. (vl-load-com)
  2. (defun c:Example_Select()
  3.     ;; This example adds members to a selection set, first by crossing and
  4.     ;; then by filtering for circles.
  5.     (setq acadObj (vlax-get-acad-object))
  6.     (setq doc (vla-get-ActiveDocument acadObj))

  7.     ;; Create the selection set
  8.     (setq ssetObj (vla-Add (vla-get-SelectionSets doc) "SSET"))
  9.    
  10.     ;; Add all object to the selection set that lie within a crossing of (28,17,0) and
  11.     ;; (-3.3, -3.6,0)
  12.     (setq mode acSelectionSetCrossing
  13.           corner1 (vlax-3d-point 28 17 0)
  14.           corner2 (vlax-3d-point -3.3 -3.6 0))

  15.     (vla-Select ssetObj mode corner1 corner2)
  16.     (alert (strcat "Objects selected: " (itoa (vla-get-Count ssetObj))))
  17.     (vla-Clear ssetObj)
  18.   
  19.     ;; Add all the Circles to the selection set that lie within the crossing of (28,17,0) and
  20.     ;; (-3.3, -3.6,0) by filtering from the current drawing
  21.     (setq gpCode (vlax-make-safearray vlax-vbInteger '(0 . 0)))
  22.     (vlax-safearray-put-element gpCode 0 0)
  23.     (setq dataValue (vlax-make-safearray vlax-vbVariant '(0 . 0)))
  24.     (vlax-safearray-put-element dataValue 0 "Circle")
  25.    
  26.     (vla-Select ssetObj mode corner1 corner2 gpCode dataValue)
  27.     (alert (strcat "Objects selected: " (itoa (vla-get-Count ssetObj))))

  28.     (vla-Delete ssetObj)
  29. )

select方法

VBA:
object.Select Mode [, Point1] [, Point2] [, FilterType, FilterData]
object Type: SelectionSet
The object this method applies to.

Mode Access: Input-only
Type: AcSelect enum
  • acSelectionSetWindow
  • acSelectionSetCrossing
  • acSelectionSetPrevious
  • acSelectionSetLast
  • acSelectionSetAll

Point1 Access: Input-only; optional
Type: Variant (three-element array of doubles)
The 3D WCS coordinates, or array of coordinates, specifying Point1. See the mode definitions for the proper use of Point1.

Point2 Access: Input-only; optional
Type: Variant (three-element array of doubles)
The 3D WCS coordinates specifying Point2. See the mode definitions for the proper use of Point2.

FilterType Access: Input-only; optional
Type: Variant
A DXF group code specifying the type of filter to use.

FilterData Access: Input-only; optional
Type: Variant
The value to filter on.



点评

完美解决,感谢大佬  详情 回复 发表于 2020-5-12 11:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2020-5-11 12:35:49 | 显示全部楼层
          (vlax-invoke-method (vlax-ename->vla-object ent) 'Getboundingbox 'minpt 'maxpt)
          (setq area (list (vlax-safearray->list minpt) (vlax-safearray->list maxpt)))
其中的ent是一个矩形,然后area是他的最小和最大的点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2020-5-11 21:08:24 | 显示全部楼层
操作选择集, ssget 多直接

点评

copyobjects里面的objects,对象数组,可以用ssget的来求出么?有例子么,大佬  详情 回复 发表于 2020-5-12 10:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2020-5-12 10:52:44 | 显示全部楼层
Lisphk 发表于 2020-5-11 21:08
操作选择集, ssget 多直接

copyobjects里面的objects,对象数组,可以用ssget的来求出么?有例子么,大佬
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

 楼主| 发表于 2020-5-12 11:17:05 | 显示全部楼层

完美解决,感谢大佬
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 01:12 , Processed in 0.222090 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表