sdls 发表于 2019-2-28 23:48:49

有问,请问怎样将点先对象改框选对象?

各位大侠,在社区里找到xiang19751218的
定数等分复制图形代码,我想要更改点先对象改框选对象。请问怎样改?

(defun c:tes( / en xfx pt1 pt2 zljl sl)
(setvar 'cmdecho 0)
(setq en (car(entsel "\n选择对象:")))
(setq xfx (car(apply 'mapcar(cons '- (bwh en)))))
(setq pt1 (getpoint "\n指定第一点:"))
(setq pt2 (getpoint "\n指定第二点:"))
(setq zljl (- (distance pt1 pt2) (abs xfx) ) )
(setq sl (getint "输入间隔数<2>:") )
(if (not sl) (setq sl 2))
(command "-array" en "" "r" 1 sl (/ zljl (float sl)))
(setvar 'cmdecho 1)
(princ)
)


(defun bwh (en / p1 p2)
(vla-getboundingbox (vlax-ename->vla-object en) 'p1 'p2)
(setq p1 (vlax-safearray->list p1)
      p2 (vlax-safearray->list p2)
)
(list p1 p2)
)

start4444 发表于 2019-3-1 13:52:57

本帖最后由 start4444 于 2019-3-1 14:25 编辑

把自定义函数改为选集外框函数就行了,我测试你的原代码根本就不是那个效果,阵列间距搞错了

(defun c:tes( / ss xfx pt1 pt2sl)
(setvar 'cmdecho 0)
(setq ss (ssget))
(setq xfx (car(apply 'mapcar(cons '- (bwhss ss)))))
(setq pt1 (getpoint "\n指定第一点:"))
(setq pt2 (getpoint pt1 "\n指定第二点:"))
;(setq zljl (- (distance pt1 pt2) (abs xfx) ) )
(setq sl (getint "输入间隔数<2>:") )
(if (not sl) (setq sl 2))
(command "-array" ss "" "r" 1 sl (/ (distance pt1 pt2) (1- sl)))
(setvar 'cmdecho 1)
(princ)
)
(defun bwhss (ss / p1 p2)
(setq BLK_BOUND (ACET-GEOM-SS-EXTENTS ss t))
(setq P1 (car BLK_BOUND))
(setq P2 (cadr BLK_BOUND))
(list p1 p2))

sunny_8848 发表于 2019-3-1 15:21:11

start4444 发表于 2019-3-1 13:52
把自定义函数改为选集外框函数就行了,我测试你的原代码根本就不是那个效果,阵列间距搞错了

(defun c:t ...

请教,我运行时提示, 错误: no function definition: ACET-GEOM-SS-EXTENTS

start4444 发表于 2019-3-1 15:35:36

sunny_8848 发表于 2019-3-1 15:21
请教,我运行时提示, 错误: no function definition: ACET-GEOM-SS-EXTENTS

这个我也是论坛看到了,我能用,应该要装了ET才行吧

sdls 发表于 2019-3-1 20:42:52

start4444 发表于 2019-3-1 13:52
把自定义函数改为选集外框函数就行了,我测试你的原代码根本就不是那个效果,阵列间距搞错了

(defun c:t ...

十分感谢!你随手一码,解决了我的一个工作难题!

alexmai 发表于 2019-3-3 12:27:01

论坛有个递增刷,可快速实现你的目的,使用性更强

sdls 发表于 2019-3-3 19:12:54

alexmai 发表于 2019-3-3 12:27
论坛有个递增刷,可快速实现你的目的,使用性更强

只看到有文字的增递刷,看到有图形的增递刷!再说我是想要在两次之间确定数量或等分!

sunny_8848 发表于 2019-3-4 16:47:58

start4444 发表于 2019-3-1 15:35
这个我也是论坛看到了,我能用,应该要装了ET才行吧

谢谢,确实可以

alexmai 发表于 2019-3-6 11:25:55

sdls 发表于 2019-3-3 19:12
只看到有文字的增递刷,看到有图形的增递刷!再说我是想要在两次之间确定数量或等分!

把你想要的东西建个块,等分用DIVIDE,距离偏移用MEASURE,按提示选 block ,写入block文件名,就行了

sdls 发表于 2019-3-6 21:02:46

alexmai 发表于 2019-3-6 11:25
把你想要的东西建个块,等分用DIVIDE,距离偏移用MEASURE,按提示选 block ,写入block文件名,就行了

谢谢,这也是个办法!!
页: [1]
查看完整版本: 有问,请问怎样将点先对象改框选对象?