abc6623 发表于 2013-1-28 12:54:43

跪求:怎样实现线段偏移直接变矩形?


四四方方的板,主视图画好了画侧视图,比如板厚是10,我一般的方法是:先在主视图里修出来一条与板长一样的线,摆在适当位置,正交复制10,再把两条线头相连,尾相连,再串接。

虽然也不算麻烦,但是对画模具图的人,这样的操作太多,也在很大程度上影响效率,我现在的想法是,修出来的线摆好后,能不能利用lisp,写一个带快捷键的小函数,输入偏移值后,直接变矩形,同时删除原有线段。

对于各位大侠应该不是难事吧,菜鸟求助,给大家提前拜年!!!



阿然 发表于 2013-1-28 15:04:27

(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)
    )
)
)

abc6623 发表于 2013-1-28 18:29:58

多谢!!!貌似程序里没有输入偏移距离的提示

ZZXXQQ 发表于 2013-1-28 21:51:05

本帖最后由 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:51:27

本帖最后由 ZZXXQQ 于 2013-1-28 21:55 编辑

试下看

yoyoho 发表于 2013-1-28 23:13:55

感谢 Z版 及 阿然 分享程序!

abc6623 发表于 2013-1-28 23:58:32

运行不了

abc6623 发表于 2013-1-29 18:31:49

厉害,可行!
不过能不能加条语句把原线段删除,因为这条线是作出来的辅助线,还得删除掉。拆模具图时,工件的外形都被串接过,没有现成的线段可用。

水仙的错 发表于 2019-9-11 23:26:41

都用了一次后就不好用了,望改进

paulpipi 发表于 2019-9-11 23:34:28


感谢 Z版 及 阿然 分享程序!
页: [1] 2
查看完整版本: 跪求:怎样实现线段偏移直接变矩形?