跪求:怎样实现线段偏移直接变矩形?
四四方方的板,主视图画好了画侧视图,比如板厚是10,我一般的方法是:先在主视图里修出来一条与板长一样的线,摆在适当位置,正交复制10,再把两条线头相连,尾相连,再串接。
虽然也不算麻烦,但是对画模具图的人,这样的操作太多,也在很大程度上影响效率,我现在的想法是,修出来的线摆好后,能不能利用lisp,写一个带快捷键的小函数,输入偏移值后,直接变矩形,同时删除原有线段。
对于各位大侠应该不是难事吧,菜鸟求助,给大家提前拜年!!!
(defun c:tt (/ ent elst entl stpt1 stpt2 enpt1 entp2)
(if (setq ent (car (entsel "\n选择直线:")))
(progn
(setq elst (entget ent)
stpt1 (cdr (assoc 10 elst))
enpt1 (cdr (assoc 11 elst))
)
(command "_.offset" pause ent pause "")
(setq entl (entlast))
(setq elstl (entget entl)
stpt2 (cdr (assoc 10 elstl))
enpt2 (cdr (assoc 11 elstl))
)
(command "_.line" stpt1 stpt2 "")
(command "_.line" enpt1 enpt2 "")
(princ)
)
)
) 多谢!!!貌似程序里没有输入偏移距离的提示 本帖最后由 ZZXXQQ 于 2013-1-29 14:55 编辑
(defun c:tt ()
(setvar "CMDECHO" 0)
(while (and (setq s1 (entsel "\n选择直线:"))
(setq ent (entget(car s1)))
(= (cdr(assoc 0 ent)) "LINE")
(setq w (getdist "\n宽度: "))
(setq pt (getpoint (cadr s1) "\n偏移点: ")))
(setq pt1 (cdr(assoc 10 ent))
pt2 (cdr(assoc 11 ent)))
(setq ptt (inters pt1 pt2 (polar pt (+ (angle pt1 pt2) (/ pi 2)) 10) pt nil)
dst (distance ptt pt)
ang (angle ptt pt)
p1 (polar pt1 ang dst)
p2 (polar pt2 ang dst)
p3 (polar p1 ang w)
p4 (polar p2 ang w))
(command "_.PLINE" "non" p1 "non" p2 "non" p4 "non" p3 "C")
)
(princ)
)
本帖最后由 ZZXXQQ 于 2013-1-28 21:55 编辑
试下看
感谢 Z版 及 阿然 分享程序! 运行不了 厉害,可行!
不过能不能加条语句把原线段删除,因为这条线是作出来的辅助线,还得删除掉。拆模具图时,工件的外形都被串接过,没有现成的线段可用。 都用了一次后就不好用了,望改进
感谢 Z版 及 阿然 分享程序!
页:
[1]
2