男人的诱惑 发表于 2012-4-13 15:53:58

路过的高手,进来看一看啊


帮个忙,在下编了很久都没有编出来,不知那路高手会,随便说几句了

【KAIXIN】 发表于 2012-4-13 18:21:39


不大明白你的意思,是用上面的尺寸直接用两条线画成那样?

男人的诱惑 发表于 2012-4-13 18:30:01

【KAIXIN】 发表于 2012-4-13 18:21 static/image/common/back.gif


右边的尺寸是参数,输入R1=5,R2=1,R3=1,W=2,S=1,然后选择两条直线,然后自动画出右边的图形。主要是要每个方向都可以,

langjs 发表于 2012-4-13 23:30:41

右图中两条间距为2的竖线哪一条是左图中竖线剪切的结果?

你编了很久都没有编出来的程序也贴出来啊给大家参考参考

男人的诱惑 发表于 2012-4-14 18:09:54

都没有人会吗,高手呢,
说个思路也好啊,让我们初学者也有学习的机会啊

男人的诱惑 发表于 2012-4-14 18:12:35

这个是别人编的测试版,有时间限制,希望那位高手能编个没有限制的上来共享一下

ZZXXQQ 发表于 2012-4-15 14:39:10

网吧写的,没调试。

;画圆弧空刀 明经 ZZXXQQ 2012.4.15
(defun c:tt ()
(setvar "CMDECHO" 0)
(if (and (setq s1 (entsel "\n选择一条直线 :"))
          (setq ent1 (entget(car s1)))
          (= (cdr(assoc 0 ent1)) "LINE")
          (setq s2 (entsel "\n选择另一条直线 :"))
          (setq ent2 (entget(car s2)))
          (= (cdr(assoc 0 ent2)) "LINE")) (progn
(setq R1 5 R2 1 OF 2 EF 0.5)
(setq p1 (cadr s1) p2 (cadr s2)
      pt1 (cdr(assoc 10 ent1)) pt2 (cdr(assoc 11 ent1))
      pt3 (cdr(assoc 10 ent2)) pt4 (cdr(assoc 11 ent2))
      pt5 (inters pt1 pt2 pt3 pt4 nil))
(if (> (distance p1 pt1) (distance p1 pt2))
   (setq tmp pt2 pt2 pt1 pt1 tmp)
)
(if (> (distance p2 pt3) (distance p2 pt4))
   (setq tmp pt4 pt4 pt3 pt3 tmp)
)
(setq an1 (angle pt5 pt1) an2 (angle pt5 pt3))
(command "_.BREAK" s1 "F" pt5 pt5)
(command "_.OFFSET" OF s2 p1 "")
(command "_.FILLET" "R" R2 "_.FILLET" pt2 (polar pt3 an1 2))
(setq pc (polar(polar pt5 an1 R1) an2 (- R1 EF)))
(command "_.CIRCLE" pc R1)
(command "_.TRIM" pt1 pt3 "" (polar pc an2 R1) "")
(command "_.FILLET" pt1 (plar pc (+ an2 pi) R1))
))
(setvar "CMDECHO" 1)
(princ)
)

男人的诱惑 发表于 2012-4-15 16:20:44

很感谢,调试了,还有一点问题圆弧还能自动倒圆角

男人的诱惑 发表于 2012-4-15 21:45:46

(defun c:JD ()
(setvar "CMDECHO" 0)
(if (and (setq s1 (entsel "\n选择一条直线 :"))
          (setq ent1 (entget(car s1)))
          (= (cdr(assoc 0 ent1)) "LINE")
          (setq s2 (entsel "\n选择另一条直线 :"))
          (setq ent2 (entget(car s2)))
          (= (cdr(assoc 0 ent2)) "LINE")) (progn
(setq R1 5 R2 1 R3 0.5 W 2 S 0.5)
(setq p1 (cadr s1) p2 (cadr s2)
      pt1 (cdr(assoc 10 ent1)) pt2 (cdr(assoc 11 ent1))
      pt3 (cdr(assoc 10 ent2)) pt4 (cdr(assoc 11 ent2))
      pt5 (inters pt1 pt2 pt3 pt4 nil))
(if (> (distance p1 pt1) (distance p1 pt2))
   (setq tmp pt2 pt2 pt1 pt1 tmp)
)
(if (> (distance p2 pt3) (distance p2 pt4))
   (setq tmp pt4 pt4 pt3 pt3 tmp)
)
(setq an1 (angle pt5 pt1) an2 (angle pt5 pt3))
(COMMAND "LINE" pt5 pt1 "")
(setq en1 (entlast))
(COMMAND "LINE" pt5 pt2 "")
(setq en2 (entlast))
(COMMAND "LINE" pt5 pt3 "")
(setq en3 (entlast))
(command "_.OFFSET" s en1 pt4 "")
(setq en4 (entlast))
(command "_.FILLET" "R" R1 "_.FILLET" en3 en4);;倒圆角,R1
(setq en5 (entlast))
(command "_.FILLET" "R" R2 "_.FILLET" en1 en5);;倒圆角,R2 老是方向倒反了,听说要做双元表才可以,本人不会,那个高手能修改一下
(command "_.OFFSET" W en3 pt1 "")
(setq en6 (entlast))
(command "_.FILLET" "R" R3 "_.FILLET" en6 en2)
))
(setvar "CMDECHO" 1)
(princ)
)
页: [1]
查看完整版本: 路过的高手,进来看一看啊