H-浩浩-H 发表于 2016-5-4 23:43:33

feng83 发表于 2016-5-3 21:40 static/image/common/back.gif
;;未经过严格测试,有问题记得提出来
(defun c:tt()
(defun dxf (code elist) (cdr (assoc code...

等分我已经搞定了       可是矩形炸开 后的   还是解决不了

(defun c:tt()
(defun dxf (code elist) (cdr (assoc code elist)))
(vl-load-com)
(command "ucs" "w")
(while(not(setq pt1(entsel "\n\t选择第1条线: "))))
(while(not(setq pt2(entsel "\n\t选择第2条线: "))))
(setq l1 (entget(car pt1)))
(setq l2 (entget(car pt2)))
(setq p1 (dxf 10 l1) p2 (dxf 11 l1) p3 (dxf 10 l2) p4 (dxf 11 l2))
(setq ang1 (angle p1 p2) ang2 (angle p3 p4))
(setq dang (- ang1 ang2))
(print dang)
(if (or(equal (abs dang) 0 1e-3)(equal (abs dang) pi 1e-3))
    (progn
      (while(not(setq a4(getreal "\n\t请输入层板厚度 :"))))
      (while(not(setq a5(getint "\n\t请输入层板数量 :"))))
      (setq w (angle p1 p3) w1 (angle p2 p4))
      (setq w10 (/ (- (distance p1 p3) (* a4 a5)) (+ a5 1)) w11 (/ (- (distance p2 p4) (* a4 a5)) (+ a5

1)))
(setq b1 1 b2 0)   
(repeat a5
      (setq p10 (polar p1 w w10))
      (setq p11 (polar p2 w1 w11))
      (setq p8 (polar p1 w (+ (* w10 b1) (* a4 b2))))
      (setq p9 (polar p2 w1 (+ (* w11 b1) (* a4 b2))))
      (entmake (list '(0 . "LINE") (cons 10 p8) (cons 11 p9)))
         (setq b2(+ b2 1))
      (setq p15 (polar p1 w (+ (* w10 b1) (* a4 b2))))
      (setq p16 (polar p2 w1 (+ (* w11 b1) (* a4 b2))))
      (entmake (list '(0 . "LINE") (cons 10 p15) (cons 11 p16)))
      (setq b1(+ b1 1))
      ))
    (alert "\n两条线不平行不符合条件!")
    )
(princ)
)

ZZXXQQ 发表于 2016-5-5 09:04:49

...
    (while(not(setq a5(getint "\n\t请输入层板数量 :"))))
    (if (> (distance p1 p3) (distance p2 p3)) (setq p1 (dxf 11 l1) p2 (dxf 10 l1)));加上这句试试
...

feng83 发表于 2016-5-5 20:45:28

本帖最后由 feng83 于 2016-5-5 21:34 编辑

H-浩浩-H 发表于 2016-5-4 21:26 static/image/common/back.gif
非常感谢    我看到有这两个问题    距离没有均分       如果是矩形炸开的线会出现如图的问题
你说的二个问题:
1炸天矩形图形会变的问题是因为,系统在选二条线的时候,会自动,都是从左或从右,所以我没做判断,矩形炸开大概是首尾相连性的问题,所以看到后面有人加了一句判断10和11点的问题
2 关于不等距的问题,开始我仅做了对二条线之间距离进行等分,所以如果是测中间线对边,应该等距分的,呵呵,没作细细的测试

在你改动的基础上,在把ZZXXQQ版主的这句加上就可以了(if (> (distance p1 p3) (distance p2 p3)) (setq p1 (dxf 11 l1) p2 (dxf 10 l1)))

H-浩浩-H 发表于 2016-5-6 20:15:11

ZZXXQQ 发表于 2016-5-5 09:04 static/image/common/back.gif
...
    (while(not(setq a5(getint "\n\t请输入层板数量 :"))))
    (if (> (distance p1 p3) (distance ...

完美解决    感谢

H-浩浩-H 发表于 2016-5-6 20:15:56

feng83 发表于 2016-5-5 20:45 static/image/common/back.gif
你说的二个问题:
1炸天矩形图形会变的问题是因为,系统在选二条线的时候,会自动,都是从左或从右,所以 ...

非常感谢 !!!!

start4444 发表于 2016-5-24 21:39:57

zmzk 发表于 2024-12-6 10:21:37

仲文玉 发表于 2016-5-3 12:49
给楼主参考

太厉害了楼主这个插件在哪里下载?
页: 1 [2]
查看完整版本: 新手编的lisp请高手指错误 谢谢