fcut2004 发表于 2012-8-6 22:09:31

直线板筋改带斜钩板筋,待完善

小弟不才,刚学lisp不久,自己拼了个直线改带斜钩的程序,这里有两个问题。1、精度不高,要把直线显示到足够大,才能成功改成斜钩.2、每次只能选一条直线,不能批量选择。 望大侠完善,特别是第一个问题,困扰了我好段时间。我编的其他画多线的命令,都要将cad的上的图显示到要画的多线的单位差不多数量级时,才能成功。
(defun c:y57 ()
   (setq ent (car (entsel "\n请选取直线:")));;ent 为实体名
   (if ent (progn                  
       (setq el (entget ent))
       (if (equal (cdr (assoc 0 el)) "LINE")
         (progn
         (setq p1 (cdr (assoc 10 el)))    ;;p1,p2分别为直线的起、终点
         (setq p2 (cdr (assoc 11 el)))
(setq dist1 (distance p1 p2));读取p1 p2间距
(setq ang1 (angle p1 p2));读取直线的角度间距
))
    ))
;(setq p1 (polar p1ang1 100));定义钢筋起点
;(setq p2 (polar p2(+ (* 1.0 pi) ang1) 100));定义钢筋终点
(setq p3 (polar p1 (+ (* 0.25 pi) ang1) 200));定义钢筋起点
(setq p4 (polar p2 (+ (* 0.75 pi) ang1) 200));定义钢筋起点
(command "pline" p3 p1 p2 p4 "")
(entdel ent)
   (princ)
)

xsso 发表于 2012-8-6 22:20:51

(defun c:y57 ()
(setq OLDOSM (getvar "osmode"))
(setvar "osmode" 0)
(setq ent (car (entsel "\n请选取直线:")));_ent 为实体名
(if ent
    (progn
      (setq el (entget ent))
      (if (equal (cdr (assoc 0 el)) "LINE")
(progn
   (setq p1 (cdr (assoc 10 el)))
   ;;p1,p2分别为直线的起、终点
   (setq p2 (cdr (assoc 11 el)))
   (setq dist1 (distance p1 p2)) ;读取p1 p2间距
   (setq ang1 (angle p1 p2)) ;读取直线的角度间距
)
      )
    )
)
   ;(setq p1 (polar p1ang1 100));定义钢筋起点
   ;(setq p2 (polar p2(+ (* 1.0 pi) ang1) 100));定义钢筋终点
(setq p3 (polar p1 (+ (* 0.25 pi) ang1) 200)) ;定义钢筋起点
(setq p4 (polar p2 (+ (* 0.75 pi) ang1) 200)) ;定义钢筋起点
(command "pline" p3 p1 p2 p4 "")
(entdel ent)
(setvar "osmode" OLDOSM)
(princ)
)

不知道你要什么效果但想画好的话

(setq OLDOSM (getvar "osmode"))
(setvar "osmode" 0)
和尾
(setvar "osmode" OLDOSM)
这几段必须加

fcut2004 发表于 2012-8-7 08:43:25

谢谢,貌似就是这样。批量改,以后再学个循环就搞定了。

xyp1964 发表于 2012-8-7 09:08:19

(defun c:tt ()
(defun aaa (s1 / el p1 p2 rad p3 p4)
    (setq el(entget s1)
          p1(cdr (assoc 10 el))
          p2(cdr (assoc 11 el))
          rad (angle p1 p2)
          p3(polar p1 (+ (* 0.25 pi) rad) 200)
          p4(polar p2 (+ (* 0.75 pi) rad) 200)
    )
    (command "pline" p3 p1 p2 p4 "")
    (entdel s1)
)
(setvar "osmode" 0)
(setq ss (ssget '((0 . "line")))
          i-1
)
(while (setq s1 (ssname ss (setq i (1+ i))))
    (aaa s1)
)
(princ)
)

psdcdr 发表于 2012-8-7 09:27:07

本帖最后由 psdcdr 于 2012-8-7 09:28 编辑

在PKPM的绘图参数不是有设置带钩的吗?


fcut2004 发表于 2012-8-8 08:42:20

psdcdr 发表于 2012-8-7 09:27 static/image/common/back.gif
在PKPM的绘图参数不是有设置带钩的吗?

公司有自己的画图规定,网上的插件几乎都不能用,所以我只能自己慢慢学点lisp。

石井鱼 发表于 2014-3-16 17:34:00

本帖最后由 石井鱼 于 2014-3-16 17:41 编辑

请教一下一条直线(非PL线)一端加斜钩怎么弄,tssd必须是PL线,最好能再加个能选择斜钩方向,画结构大样经常用到,谢谢!

chenry676 发表于 2024-9-17 16:09:58

xyp1964 发表于 2012-8-7 09:08


请问我输入命令无效,而且加载就出现选择窗口是怎么回事?
页: [1]
查看完整版本: 直线板筋改带斜钩板筋,待完善