H-浩浩-H 发表于 2016-5-1 13:51:45

新手编的lisp请高手指错误 谢谢

本帖最后由 H-浩浩-H 于 2016-5-6 20:19 编辑

想编写一个给两条直线中间加指定个数及宽度的双线 并平分
可是能力有限      实在搞不定    请大神帮忙   
http://bbs.mjtd.com/forum.php?mod=image&aid=92887&size=300x300&key=cf2d948ca298277b&nocache=yes&type=fixnone

除第一条直线    和第二条直线   别的直线都是使用lsp自动生成

请大神帮忙   自己写的代码如下   if中间的第一条直线 向 第二条直线 方向偏移线段 不知道怎么写了而且CAD 提示语法错误


等分层板ff.LSP


非常感谢各位大神的帮助

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

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

太厉害了楼主这个插件在哪里下载?

H-浩浩-H 发表于 2016-5-2 07:24:34

请高手指点   谢谢

xyp1964 发表于 2016-5-2 17:08:13

H-浩浩-H 发表于 2016-5-2 07:24 static/image/common/back.gif
请高手指点   谢谢



H-浩浩-H 发表于 2016-5-2 22:01:35

xyp1964 发表于 2016-5-2 17:08 static/image/common/back.gif


谢谢   这个lispcad2008 提示   错误: no function definition: XYP-START   这个怎么解决

ZZXXQQ 发表于 2016-5-3 10:30:19

(defun c:tt()
(defun dxf (code elist) (cdr (assoc code elist)))
(vl-load-com)
(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
    (setq a1 (vlax-curve-getclosestpointto (car pt1) '(0 0 0) t))
    (setq a2 (vlax-curve-getclosestpointto (car pt2) '(0 0 0) t))
    (setq a3 (abs (- (apply 'max a1) (apply 'max a2))))
    (print a3)
    (while(not(setq a4(getdist "\n\t请输入层板厚度 :"))))
    (while(not(setq a5(getdist "\n\t请输入层板数量 :"))))
    (setq a6 (/ (- a3 (* a4 a5) (+ a5 1))))
    (setq a7 1)
    (if (<= a7 a5) (princ))
)
    (alert "\n两条线不平行不符合条件!")
)
(princ)
)剩下画线功能楼主自编吧

仲文玉 发表于 2016-5-3 12:49:07

给楼主参考

H-浩浩-H 发表于 2016-5-3 19:36:07

ZZXXQQ 发表于 2016-5-3 10:30 static/image/common/back.gif
剩下画线功能楼主自编吧

(defun c:tt()
(defun dxf (code elist) (cdr (assoc code elist)))
(vl-load-com)
(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))
(if (or(equal (abs dang) 0 1e-3)(equal (abs dang) pi 1e-3))
   (progn
    (setq a1 (vlax-curve-getclosestpointto (car pt1) '(0 0 0) t))
    (setq a2 (vlax-curve-getclosestpointto (car pt2) '(0 0 0) t))
    (setq a3 (abs (- (apply 'min a1) (apply 'min a2))))
    (print a3)
    (while(not(setq a4(getdist "\n\t请输入层板厚度 :"))))
    (while(not(setq a5(getdist "\n\t请输入层板数量 :"))))
    (setq a6 (/ (- a3 (* a4 a5)) (+ a5 1)))
    (print a6)
    (setq a7 1)
    (setq en(car (pt1)))
    (setq obj(vlax-ename->vla-object en)))
        (setq b1 1)
        (setq b2 0)
    (while (<= a7 a5)
    (vla-Offset obj (+ (* a6 b1) (* a4 b2)))
        (setq b2(+ b2 1))
    (vla-Offset obj (+ (* a6 b1) (* a4 b2)))
      (setq b1(+ b1 1))
        (princ)
        )
   )
    (alert "\n两条线不平行不符合条件!")
)
(princ)
)

H-浩浩-H 发表于 2016-5-3 19:38:33

ZZXXQQ 发表于 2016-5-3 10:30 static/image/common/back.gif
剩下画线功能楼主自编吧

非常感谢    但是   偏移线的这一块    也有出错提醒   请大侠帮忙看一下哪里有语法错误谢谢了

feng83 发表于 2016-5-3 21:40:18

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

;;未经过严格测试,有问题记得提出来
(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) (+ a5 1)) w11 (/ (distance p2 p4) (+ a5 1)))
      (repeat a5
      (setq p10 (polar p1 w w10))
      (setq p11 (polar p2 w1 w11))
      (setq p8 (polar p1 w (- w10 (/ a4 2))))
      (setq p9 (polar p2 w1 (- w11 (/ a4 2))))
      (entmake (list '(0 . "LINE") (cons 10 p8) (cons 11 p9)))
      (setq p15 (polar p1 w (+ w10 (/ a4 2))))
      (setq p16 (polar p2 w1 (+ w11 (/ a4 2))))
      (entmake (list '(0 . "LINE") (cons 10 p15) (cons 11 p16)))
      (setq p1 p10 p2 p11)
      ))
    (alert "\n两条线不平行不符合条件!")
    )
(princ)
)

H-浩浩-H 发表于 2016-5-4 21:26:13

本帖最后由 H-浩浩-H 于 2016-5-4 21:28 编辑

feng83 发表于 2016-5-3 21:40 static/image/common/back.gif
;;未经过严格测试,有问题记得提出来
(defun c:tt()
(defun dxf (code elist) (cdr (assoc code...
file:///D:/1.png    file:///D:/1.png   http://bbs.mjtd.com/forum.php?mod=image&aid=92938&size=300x300&key=47c54b63dd26b405&nocache=yes&type=fixnone非常感谢http://bbs.mjtd.com/forum.php?mod=image&aid=92937&size=300x300&key=37243edca5ce6740&nocache=yes&type=fixnone    我看到有这两个问题    距离没有均分       如果是矩形炸开的线会出现如图的问题
页: [1] 2
查看完整版本: 新手编的lisp请高手指错误 谢谢