找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1072|回复: 6

[已解决] 网上找的结构用的钢筋断点lisp程序,用不了希望有大师帮忙改进一下

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2019-3-29 09:51:34 | 显示全部楼层 |阅读模式
悬赏20D豆未解决
本帖最后由 那一抹微笑 于 2019-3-29 14:39 编辑

加载了用不了,功能如图所示,下面是源码:
[code="lisp] (defun c:tt ( / e en la p pp pt pt1 pt2 px)
(defun mkline (la pt1 pt2) (entmakex (list '(0 . "LINE") (cons 8 la) (cons 10 pt1) (cons 11

pt2))))
  (vl-load-com)
  (while (setq en (entsel "\n选择钢筋断点:")
  pt (getpoint "\n点取弯钩方向:")
  )
  (setq e (car en)
    la (cdr (assoc 8 (entget e)))
    p (vlax-curve-getClosestPointTo e (cadr en))
    px (vlax-curve-getClosestPointTo e pt)
    pp (polar px (angle px p) 1e6)
  )
    (cond
      ((equal (* 0.25 pi) (angle p pt) (* 0.249 pi)) (mkline la p (polar p (* 0.25 pi)

100)) (vl-cmdf "break" (list e p) pp))
      ((equal (* 0.75 pi) (angle p pt) (* 0.249 pi)) (mkline la p (polar p (* 0.75 pi)

100)) (vl-cmdf "break" (list e p) pp))
      ((equal (* 1.25 pi) (angle p pt) (* 0.249 pi)) (mkline la p (polar p (* 1.25 pi)

100)) (vl-cmdf "break" (list e p) pp))
      ((equal (* 1.75 pi) (angle p pt) (* 0.249 pi)) (mkline la p (polar p (* 1.75 pi)

100)) (vl-cmdf "break" (list e p) pp))
      (t (exit))
    )x x
  )
)[/code]

1553823860.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1个

财富等级: 恭喜发财

发表于 2019-3-29 13:10:37 | 显示全部楼层
1,将倒数第三行: "     )x x  " ---->    x x 去掉 ,  就可以运行。
2,原程序仅对水平和竖直方向的钢筋有效;对斜向钢筋就明显不对了,应增加对钢筋方向的判断。

点评

好的,谢谢  详情 回复 发表于 2019-3-29 14:34
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 55个

财富等级: 招财进宝

发表于 2019-3-29 13:41:53 | 显示全部楼层
(defun c:tt ( / e en la p pp pt pt1 pt2 px)
        (defun mkline (la pt1 pt2) (entmakex (list '(0 . "LINE") (cons 8 la) (cons 10 pt1) (cons

11 pt2))))
          (vl-load-com)
        (while (setq en (entsel "\n选择钢筋断点:")
                pt (getpoint "\n点取弯钩方向:")
                  )
          (setq e (car en)
                la (cdr (assoc 8 (entget e)))
                p (vlax-curve-getClosestPointTo e (cadr en))
                px (vlax-curve-getClosestPointTo e pt)
                pp (polar px (angle px p) 1e6)
        )
        (cond
        ((equal (* 0.25 pi) (angle p pt) (* 0.249 pi)) (mkline la p (polar p (* 0.25 pi) 10))

(vl-cmdf "break" (list e p) pp))
        ((equal (* 0.75 pi) (angle p pt) (* 0.249 pi)) (mkline la p (polar p (* 0.75 pi) 10))

(vl-cmdf "break" (list e p) pp))
        ((equal (* 1.25 pi) (angle p pt) (* 0.249 pi)) (mkline la p (polar p (* 1.25 pi) 10))

(vl-cmdf "break" (list e p) pp))
              ((equal (* 1.75 pi) (angle p pt) (* 0.249 pi)) (mkline la p (polar p (* 1.75 pi) 10))

(vl-cmdf "break" (list e p) pp))
        (t (exit))
            );end cond
          );end while
);end fun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 55个

财富等级: 招财进宝

发表于 2019-3-29 13:45:57 | 显示全部楼层
这是结果
123.png

点评

好了,谢谢啊  详情 回复 发表于 2019-3-29 14:37
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2019-3-29 14:34:13 | 显示全部楼层
dwg001 发表于 2019-3-29 13:10
1,将倒数第三行: "     )x x  " ---->    x x 去掉 ,  就可以运行。
2,原程序仅对水平和竖直方向的钢 ...

好的,谢谢

点评

你好,我想问一下这个程序,遇到那种斜的钢筋就对齐不了,有没有办法改进的 (defun c:gja () (setvar "cmdecho" 0) (setq old-osmode (getvar "osmode")) (setvar "osmode" 0) (while(= (setq endate(car  详情 回复 发表于 2019-3-29 14:42
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2019-3-29 14:37:46 | 显示全部楼层

好了,谢谢啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2019-3-29 14:42:30 | 显示全部楼层

你好,我想问一下这个程序,遇到那种斜的钢筋就对齐不了,有没有办法改进的
(defun c:gja ()
  (setvar "cmdecho" 0)
        (setq old-osmode (getvar "osmode"))
        (setvar "osmode" 0)
  (while(= (setq endate(car(entsel "选择对齐的基准钢筋:"))) nil))
  (setq datelst(entget endate))
  (setq jptlst(get10date datelst))
  (setq ang(angle(car jptlst)(car (reverse jptlst))))
  (setq pta(car jptlst))
  (while(= 1 1)
    (print "选择需要对齐的钢筋(包括文字):")
    (setq ass(ssget))
    (setq enss(mapcar 'cadr (cdr(reverse(ssnamex ass)))))
    (setq n 0)
    (repeat (length enss)
      (setq en(nth n enss))
      (if(equal "LWPOLYLINE" (cdr(assoc 0 (entget en))))
        (setq qptlst(get10date (entget en)))
                        )
      (setq n(1+ n))
                )
    (if(or(equal ang 0 0.001)(equal ang (* 1 pi) 0.001)(equal ang (* 2 pi) 0.001))
      (progn
        (command "_.move" ass "" (car qptlst) (list(car(car qptlst))(cadr(car jptlst))))
                        )
      (progn
        (command "_.move" ass "" (car qptlst) (list(car(car jptlst))(cadr(car qptlst))))
                        )
                );if结束
        )
  (setvar "osmode" old-osmode)
  (prin1)
)
(defun get10date( datelst / ptlst x )
  (setq ptlst '())
  (mapcar '(lambda(x)
                                                 (if(= 10 (car x))(setq ptlst(cons (cdr x) ptlst)))
                                         )
                datelst
        )
  (reverse ptlst)
)

(defun *error* (msg)
  (setvar "osmode" old-osmode)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-4 16:57 , Processed in 0.446862 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表