涛涛_1048 发表于 2018-7-4 23:21:22

钢筋对齐(已解决)

本帖最后由 涛涛_1048 于 2018-7-28 10:59 编辑

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

涛涛_1048 发表于 2018-10-23 23:35:27

是一个一个的,不过好就好在,基准钢筋选过后,其他要对齐的钢筋可以一个一个的选,不用再选基准钢筋。我也想让人编成一个选过基准钢筋后,其他再选的对齐钢筋,可以一次选好多,然后可以一次对齐的。不过,能力有限,再说我们这个钢筋主要是针对我们建筑设计的结构专业。其他人有能力编程,但是局限于对我们专业的不了解,不一定能做到。

Andyhon 发表于 2018-7-5 10:20:45

先这样改试:
(setq ang (angle (car jptlst) (Last jptlst)))

   ;; (if (or (equal ang 0 0.001) (equal ang (* 0.5 pi) 0.001))
   ===>
    (if        (or (equal ang 0 0.001) (equal ang pi 0.001))

您的 钢筋 图元 有4四个点位值
Why?

evayleung 发表于 2018-7-5 10:04:36

就改了两个地方,看看是不是这样,太高深的我也不会。只会简单的。

evayleung 发表于 2018-7-5 10:05:20

(setq ang(angle(car jptlst)(car (reverse jptlst))))

(if(or(equal ang 0 0.001)(equal ang (* 1 pi) 0.001))

就这两个地方

涛涛_1048 发表于 2018-7-7 10:57:55

谢谢大家的辛苦努力,按evayleung的修改后的程序可以满足使用了。做结构的可以下载下来使用。

依然小小鸟 发表于 2018-10-22 15:58:20

涛涛_1048 发表于 2018-7-7 10:57
谢谢大家的辛苦努力,按evayleung的修改后的程序可以满足使用了。做结构的可以下载下来使用。

还是有bug 假如水平钢筋有直勾钢筋对齐后 是直勾对齐目标线 而不是钢筋对齐目标线

enn09 发表于 2018-10-23 09:29:40

不能批量对齐,只能一个个对齐啊

依然小小鸟 发表于 2018-10-24 09:30:43

涛涛_1048 发表于 2018-10-23 23:35
是一个一个的,不过好就好在,基准钢筋选过后,其他要对齐的钢筋可以一个一个的选,不用再选基准钢筋。我也 ...

还是有bug 假如水平钢筋有直勾钢筋对齐后 是直勾对齐目标线 而不是钢筋对齐目标线

涛涛_1048 发表于 2018-10-24 10:30:23

在别的论坛有人给写了一个,什么钢筋都能对齐,就是每次都要选择基准钢筋,并且还要安装论坛的API才能用。
页: [1] 2
查看完整版本: 钢筋对齐(已解决)