使用vla-sendcommand函数绘制图形后、无法用entlast获取生成的图元名
请教一下各位大神!(vla-sendcommand
(vla-get-ActiveDocument (vlax-get-acad-object))
"MVIEW "
)我现在用上面的代码去绘制视口、绘制完成后、无法用entlast获取到生成视口的图元名。
想请教一下有没有其他方法、可以获取到最新生成对象的图元名
(command "MVIEW" (setq pt1 (getpoint)) (getcorner pt1))
(setq ty(entlast))
(sssetfirst nil (ssadd ty)) 飞雪神光 发表于 2024-1-20 11:36
你好、你这个我会操作、我主要是想执行程序的时候、可以用CAD原生命令一样的提示和操作 xiaocainiao 发表于 2024-1-20 13:35
你好、你这个我会操作、我主要是想执行程序的时候、可以用CAD原生命令一样的提示和操作
哦 那这种命令得有交互类的东西拦着点 要不他会在 MVIEW 命令结束之前运行后面的代码 飞雪神光 发表于 2024-1-20 13:41
哦 那这种命令得有交互类的东西拦着点 要不他会在 MVIEW 命令结束之前运行后面的代码
嗯嗯 我加了判断、就是不知道为啥视口线画完以后、无法用entlast和ssget里面的L模式来获取生成的图元名 什么样的判断呢 entlast和ssget 得到的是 在MVIEW结束之前的图元 飞雪神光 发表于 2024-1-20 15:42
什么样的判断呢 entlast和ssget 得到的是 在MVIEW结束之前的图元
我就是想用MV之前的ENTLAST和MV之后的ENTLAST判断、现在就MV以后这个图元名搞不出来 xiaocainiao 发表于 2024-1-20 15:44
我就是想用MV之前的ENTLAST和MV之后的ENTLAST判断、现在就MV以后这个图元名搞不出来
那肯定的啊 前后得到的图元名是一样的 就得通过交互函数拦着点命令的运行 让MV命令先运行结束再运行后面的 entlast 那必须可以,就是路子有点偏
(vl-load-com)
(defun Vlr_getlast1 (rea cde / )
(if (= (car cde) "MVIEW")(setq e (entlast)))
)
(defun Vlr_getlast2 (rea cde / )
(if (= (car cde) "MVIEW")(progn
;(print (vlr-reactors))
(print (setq e2 (entnext e)))
;中间加上其他想要处理的代码,但是不要再出现COMMAND命令
(setq e nil e2 nil)
(mapcar 'vlr-remove-all '(:vlr-command-reactor))
;(print (vlr-reactors))
))
)
(defun c:ttt ( / )
(mapcar 'vlr-remove-all '(:vlr-command-reactor))
(vlr-command-reactor nil (list (cons :vlr-commandWillStart (function Vlr_getlast1))
(cons :vlr-commandEnded (function Vlr_getlast2)) ))
(vlax-invoke-method (vlax-get (vlax-get-acad-object) 'activedocument) 'sendcommand "mview ")
)
页:
[1]