找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 898|回复: 10

[已解决] 钢筋对齐(已解决)

[复制链接]

已领礼包: 466个

财富等级: 日进斗金

发表于 2018-7-4 23:17:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 sunshinejwt 于 2018-7-20 08:40 编辑

以前请人编了个程序,当时只测试了水平钢筋,现在想用了才发现竖向钢筋没有办法对齐。现在把图纸和原来的程序贴出来,请高手帮忙。可以在此程序的基础上修改,或者另外编写都可以。一个结构佬不胜感谢!
以下是当时的程序
(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)(cadr 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 (* 0.5 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)
  )

钢筋对齐配图_t3.zip

17.35 KB, 下载次数: 14, 下载积分: D豆 -1 , 活跃度 1

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

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-7-4 23:30:26 | 显示全部楼层
比较专业的程序,最好贴个图,说明下竖直钢筋怎么没有对齐,对齐后是什么样的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 466个

财富等级: 日进斗金

 楼主| 发表于 2018-7-4 23:49:40 | 显示全部楼层
发的帖子里有CAD文件,下面两张图是截图。
111.png
222.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3605个

财富等级: 富可敌国

发表于 2018-7-5 08:31:55 | 显示全部楼层
你这个写得太粗了,水平都不一定能对齐,角度是有一定误差的,水平有可能ang是0或2pi差一点点或pi...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-7-5 09:16:54 | 显示全部楼层
构建个对齐的变换矩阵就行了,用不了多少代码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 466个

财富等级: 日进斗金

 楼主| 发表于 2018-7-5 10:37:34 | 显示全部楼层
说实在的,这个代码是我请人代写的,现在联系不上了。这个代码我还看不懂。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2018-7-5 13:26:38 | 显示全部楼层
这个有些什么功能,能介绍一下吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2018-7-5 22:08:09 | 显示全部楼层
本帖最后由 newer 于 2018-7-6 00:52 编辑

试试,钢筋可以带钩,按最长的直线段对齐,水平、竖直、斜向都可以对齐
钢筋对齐.gif


  1. (defun c:tt ()
  2.   (defun _maxlen (e / i len gl gl1)
  3.     (setq i         -1
  4.           maxlen 1e-100
  5.     )
  6.     (repeat (xdrx_polyline_numverts e)
  7.       (if (= (xdrx_polyline_segtype e (setq i (1+ i))) "kLine")
  8.         (progn (setq gl         (xdrx_getpropertyvalue e "linesegat" i)
  9.                      len (xdge::getpropertyvalue gl "length")
  10.                )
  11.                (if (> len maxlen)
  12.                  (progn        (setq maxlen len
  13.                               gl1 gl
  14.                         )
  15.                  )
  16.                  (xdge::free gl)
  17.                )
  18.         )
  19.       )
  20.     )
  21.     gl1
  22.   )
  23.   (if (and (setq e (car        (xdrx_entsel
  24.                           "\n选取对齐基准钢筋<退出>:"
  25.                           '((0 . "LWPOLYLINE"))
  26.                         )
  27.                    )
  28.            )
  29.            (xdrx_initssget "\n选择要对齐的钢筋和标注<退出>:")
  30.            (setq ss (xdrx_ssget '((0 . "LWPOLYLINE,TEXT"))))
  31.       )
  32.     (progn (xdrx_begin)
  33.            (setq gl1   (_maxlen e)
  34.                  ss1   (xd::pickset:getsub ss '((0 . "LWPOLYLINE")))
  35.                  e1    (ssname ss1 0)
  36.                  gl2   (_maxlen e1)
  37.                  pts1  (xdge::getpropertyvalue gl1 "startpoint" "endpoint")
  38.                  pts2  (xdge::getpropertyvalue gl2 "startpoint" "endpoint")
  39.                  pts1  (xd::pnts:minx->miny pts1 1e-3)
  40.                  pts2  (xd::pnts:minx->miny pts2 1e-3)
  41.                  base  (xd::pnts:orthoproject pts2 (car pts1) (cadr pts1))
  42.                  to1   (car base)
  43.                  from1 (car pts2)
  44.                  to2   (mapcar '+ to1 (mapcar '- (cadr pts1) (car pts1)))
  45.                  from2 (mapcar '+ from1 (mapcar '- (cadr pts2) (car pts2)))
  46.                  mat   (xdrx_matrix_align from1 from2 to1 to2)
  47.            )
  48.            (xdrx_entity_transform ss mat)
  49.            (xdge::free gl1 gl2)
  50.            (xdrx_end)
  51.     )
  52.   )
  53.   (princ)
  54. )


点评

得配合晓东工具箱才能使用吗  详情 回复 发表于 2018-12-6 12:40
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 466个

财富等级: 日进斗金

 楼主| 发表于 2018-7-7 11:01:05 | 显示全部楼层
哈哈,终于可以用来。谢谢大家。论坛的力量真是无穷的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-12-6 12:40:54 | 显示全部楼层
Lispboy 发表于 2018-7-5 22:08
试试,钢筋可以带钩,按最长的直线段对齐,水平、竖直、斜向都可以对齐

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

使用道具 举报

已领礼包: 466个

财富等级: 日进斗金

 楼主| 发表于 2018-12-6 14:40:41 | 显示全部楼层
我是安装了晓东的API后就可以使用了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 20:05 , Processed in 0.195027 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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