ynhh
发表于 2015-6-17 11:05:52
老黄专研精神可嘉
edata
发表于 2015-6-17 13:53:02
自贡黄明儒 发表于 2015-6-16 22:50 static/image/common/back.gif
entmake???不会吧?
因为时间关系,就用圆来做演示,纯lisp,其他类似,方法不局限这一种,可以考虑混合command移动和分解命令。
e2002
发表于 2015-6-17 14:42:02
看看有什么用处
qyming
发表于 2015-6-17 15:37:52
回复,看帖!
q3_2006
发表于 2015-6-17 18:47:36
本帖最后由 q3_2006 于 2015-6-17 18:52 编辑
改了下G版的代码...也以加圆为例哈...因为代码量稍微少点...
(defun c:tt ( / a bk blkdef doc e el i name Newobjs obj objs p1 p2 sn v)
(while
(and (setq bk (car (entsel "\n点取图块:")))
(princ "\n选择要增加块内图元:")
(setq sn (ssget))
(= "INSERT" (cdr (assoc 0 (setq el (entget bk)))))
)
(setq name (cdr (assoc 2 el))
p1 (cdr (assoc 10 el))
)
(setq blkdef (vla-item
(vla-get-blocks
(setq
doc (vla-get-ActiveDocument (vlax-get-acad-object))
)
)
name
)
)
(vlax-for obj blkdef
(setq objs (cons obj objs))
)
(setq Newobjs (vlax-invoke
doc
'CopyObjects
objs
(vla-get-ModelSpace doc)
)
)
(foreach a objs (vla-delete a))
(repeat (setq i (sslength sn))
(setq e (ssname sn (setq i (1- i)))
e (vlax-ename->vla-object e)
p2 (Vlax-Get e 'Center )
v (mapcar '- p2 p1)
)
(Vlax-Put-Property e 'Center (Vlax-3d-Point v) )
(setq Newobjs (cons e Newobjs))
)
(vlax-invoke doc 'CopyObjects Newobjs blkdef)
(foreach a Newobjs (vla-delete a))
(vla-regen doc :vlax-true)
)
(princ)
)
lucas_3333
发表于 2015-6-17 19:01:49
本帖最后由 lucas_3333 于 2015-6-17 19:10 编辑
q3_2006 发表于 2015-6-17 18:47 static/image/common/back.gif
改了下G版的代码...也以加圆为例哈...因为代码量稍微少点...
(defun c:tt ( / a bk blkdef doc e el i nam ...
;;块增加对象,我以往用Mac Lee的那个程序,但存在一个问题,增加对象后,框选增加的对象时,选择不到块。
在低版CAD (如CAD2007)中,楼主提到的问题还是没解决哟 !
黄大师, 换个高版CAD吧, 用2010版CAD是没有此问题的
q3_2006
发表于 2015-6-17 19:13:30
lucas_3333 发表于 2015-6-17 19:01 static/image/common/back.gif
在低版CAD (如CAD2007)中,楼主提到的问题还是没解决哟 !
黄大师, 换个高版CAD吧, 用2010版CAD是没 ...
我没用过..低版本也没试过..这个还有版本问题哈...
Jack_PC
发表于 2015-6-17 21:44:33
土办法
lucas_3333
发表于 2015-6-18 10:21:53
黄大师所说这个问题
;;块增加对象,我以往用Mac Lee的那个程序,但存在一个问题,增加对象后,框选增加的对象时,选择不到块。
这个应该是低版本的BUG, 我不认为编程能解决这个问题,要不关闭再开?
77077
发表于 2015-6-19 09:42:39
回复,学习学习!