关于CAD lisp的,怎么能让它框选,和多选。

大哥帮忙改下,我想让它能够框选、多选,不然一条一条选太没效率了源码如下:(defunc:ppp(/petss)(setqpet(getvar"PEDITACCEPT"))... 大哥帮忙改下,我想让它能够框选、多选,不然一条一条选太没效率了
源码如下:
(defun c:ppp( / pet ss)
(setq pet (getvar "PEDITACCEPT"))
(setvar "PEDITACCEPT" 1)
(while (setq ss (ssget '((0 . "ARC,*LINE"))))
(command "_pedit" (ssname ss 0) "j" ss "" ""))
(setvar "PEDITACCEPT" pet)
(princ))
拜托了,让它能多选!!!一次选择几十条直线同时变为多段线
展开
 我来答
潇洒乐cWf93
2012-05-07 · TA获得超过595个赞
知道答主
回答量:364
采纳率:0%
帮助的人:169万
展开全部
可以用反应器实现,前提是画线和输入文字必须用定义的函数一次性操作完成.LISP代码如下:
(VL-Load-Com)
(defun c:Line_Txt(/ Pt Pt1 Pt2 EntLine HandTxt VlaObj Tmp)
(setq Pt1 (getpoint "\n指定第一点:"))
(setq Pt2 (getpoint "\n指定下一点:"))
(setq Pt (list (/ (+ (car Pt1) (car Pt2)) 2) (/ (+ (cadr Pt1) (cadr Pt2)) 2) (/ (+ (caddr Pt1) (caddr Pt2)) 2)))
(command "._Line" Pt1 Pt2 "")
(setq EntLine (entlast))
(setq VlaObj (cons (VLAX-EName->VLA-Object EntLine) '()));;将直线转换为VLA对象

(setq HandTxt '((0 . "TEXT"))
HandTxt (append HandTxt (list (append '(10) Pt1)))
HandTxt (append HandTxt (list (append '(11) Pt)))
HandTxt (append HandTxt (list (cons 40 (getdist "\n指定高度:"))))
HandTxt (append HandTxt (list (cons 72 1)))
HandTxt (append HandTxt (list (cons 73 0)))
HandTxt (append HandTxt (list (cons 50 (angle pt1 Pt2))))
HandTxt (append HandTxt (list (cons 1 (getstring "\n输入文字:>")))))
(entmake HandTxt)
(setq HandTxt (cdr (Assoc 5 (entget (entlast)))))
(VLR-Pers (VLR-Object-Reactor vlaObj HandTxt '((:vlr-modified . LineModefy))))
)

(defun LineModefy(EntLine EntTxt parameter-list / Pt Pt1 Pt2)
(setq EntTxt (entget (HandEnt (VLR-Data EntTxt))))
(setq EntLine (entget (VLAX-VLA-Object->EName EntLine)))
(setq Pt1 (cdr (assoc 10 EntLine)) Pt2 (cdr (assoc 11 EntLine)))
(setq Pt (list (/ (+ (car Pt1) (car Pt2)) 2) (/ (+ (cadr Pt1) (cadr Pt2)) 2) (/ (+ (caddr Pt1) (caddr Pt2)) 2)))
(setq EntTxt (subst (cons 50 (angle Pt1 Pt2)) (assoc 50 EntTxt) EntTxt)
EntTxt (subst (append '(10) Pt1) (assoc 10 EntTxt) EntTxt)
EntTxt (subst (append '(11) Pt) (assoc 11 EntTxt) EntTxt))
(entmod EntTxt)
)

也可以用属性块实现,将文字与直线定义成属性块,打开块编辑器,在参数选项板中设定点参数和旋转参数,在动作选项板中定义要执行的动作,……,具体的自己参照属性块的做吧。
追问
放屁
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
VSH艾羽
2024-10-27 广告
CAD(计算机辅助设计)技术在上海艾羽信息科技有限公司的应用极为广泛。我们利用先进的CAD软件工具,精确高效地绘制产品设计图纸,从二维草图到三维建模,无所不能。这一技术不仅优化了设计流程,缩短了产品从概念到实物的周期,还通过精准的数据分析提... 点击进入详情页
本回答由VSH艾羽提供
青科小王子f9efa18
2012-05-10 · TA获得超过779个赞
知道小有建树答主
回答量:327
采纳率:50%
帮助的人:85.2万
展开全部
(setq ss (ssget '((0 . "ARC,*LINE"))))
(setq n (sslength ss) i 0)
(while (< i n)
(command "_pedit" (ssname ss i) "j" ss "" ""))
(setq i (+ i 1))
......)
这样试试吧,我没有调试,算法应该不错。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式