明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2230|回复: 6

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

[复制链接]
发表于 2012-8-6 22:09 | 显示全部楼层 |阅读模式
小弟不才,刚学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 p1  ang1 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)
)
发表于 2012-8-6 22:20 | 显示全部楼层
  1. (defun c:y57 ()
  2.   (setq OLDOSM (getvar "osmode"))
  3.   (setvar "osmode" 0)
  4.   (setq ent (car (entsel "\n请选取直线:")));_ent 为实体名
  5.   (if ent
  6.     (progn
  7.       (setq el (entget ent))
  8.       (if (equal (cdr (assoc 0 el)) "LINE")
  9. (progn
  10.    (setq p1 (cdr (assoc 10 el)))
  11.    ;;p1,p2分别为直线的起、终点
  12.    (setq p2 (cdr (assoc 11 el)))
  13.    (setq dist1 (distance p1 p2)) ;读取p1 p2间距  
  14.    (setq ang1 (angle p1 p2)) ;读取直线的角度间距
  15. )
  16.       )
  17.     )
  18.   )
  19.      ;(setq p1 (polar p1  ang1 100));定义钢筋起点
  20.      ;(setq p2 (polar p2  (+ (* 1.0 pi) ang1) 100));定义钢筋终点
  21.   (setq p3 (polar p1 (+ (* 0.25 pi) ang1) 200)) ;定义钢筋起点
  22.   (setq p4 (polar p2 (+ (* 0.75 pi) ang1) 200)) ;定义钢筋起点
  23.   (command "pline" p3 p1 p2 p4 "")
  24.   (entdel ent)
  25.   (setvar "osmode" OLDOSM)
  26.   (princ)
  27. )


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

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

 楼主| 发表于 2012-8-7 08:43 | 显示全部楼层
谢谢,貌似就是这样。批量改,以后再学个循环就搞定了。
发表于 2012-8-7 09:08 | 显示全部楼层
  1. (defun c:tt ()
  2.   (defun aaa (s1 / el p1 p2 rad p3 p4)
  3.     (setq el  (entget s1)
  4.           p1  (cdr (assoc 10 el))
  5.           p2  (cdr (assoc 11 el))
  6.           rad (angle p1 p2)
  7.           p3  (polar p1 (+ (* 0.25 pi) rad) 200)
  8.           p4  (polar p2 (+ (* 0.75 pi) rad) 200)
  9.     )
  10.     (command "pline" p3 p1 p2 p4 "")
  11.     (entdel s1)
  12.   )
  13.   (setvar "osmode" 0)
  14.   (setq ss (ssget '((0 . "line")))
  15.           i  -1
  16.   )
  17.   (while (setq s1 (ssname ss (setq i (1+ i))))
  18.     (aaa s1)
  19.   )
  20.   (princ)
  21. )
发表于 2012-8-7 09:27 | 显示全部楼层
本帖最后由 psdcdr 于 2012-8-7 09:28 编辑

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


本帖子中包含更多资源

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

x
 楼主| 发表于 2012-8-8 08:42 | 显示全部楼层
psdcdr 发表于 2012-8-7 09:27
在PKPM的绘图参数不是有设置带钩的吗?

公司有自己的画图规定,网上的插件几乎都不能用,所以我只能自己慢慢学点lisp。
发表于 2014-3-16 17:34 | 显示全部楼层
本帖最后由 石井鱼 于 2014-3-16 17:41 编辑

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

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-2 08:09 , Processed in 1.357592 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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