找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 776|回复: 5

[原创]:自动地在天正建筑平面图上生成过梁

[复制链接]

已领礼包: 9个

财富等级: 恭喜发财

发表于 2003-3-27 20:59:47 | 显示全部楼层 |阅读模式

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

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

×
;----------------------过梁自动生成程序-------------------------------
;本程序自动地在天正建筑平面图上生成过梁信息,编程思路是首先寻找建筑图上的图块_WBLK/_DBLK,然后取得
;属性插入点和插入比例的值,计算出门窗大小及过梁绘图/标注位置.工作比例为1:100

  1. (defun c:sgl()
  2.         ;(setq *error* xm_err)
  3.         ;(setvar "cmdecho" 1)
  4.         (princ "\n本程序将自动地从天正/理正建筑平面图上生成过梁信息.....")
  5.                 (if (= (setq scale (getint"\n请输入作图比例(100):")) nil)(setq scale 100))
  6.                 (prompt "\n选择要生成过梁的实体.")
  7.                 (setq sset (ssget))
  8.                 (if (null sset)
  9.                 (progn
  10.                         (princ "\n没有选到实体.")
  11.                         (exit)
  12.                 ))
  13.                 (setq loadid (getint"\n本层大多数承重单元是横(Anykey)还是竖(1)?"))
  14.                 ;verify the block of _wblk
  15.                 (cht_bl)
  16.                 ;start playing!
  17.                 (wr_gl)
  18.                
  19.                
  20.   )
  21.                 ;__________过滤天正门窗
  22.                 (defun cht_bl ()
  23.                  (setq ssl   (sslength sset)
  24.                         nsset (ssadd))
  25.                         (if (> ssl 25)
  26.                         (princ "\n正在过滤天正门窗 -- 请稍候....\n ")
  27.                         )
  28.                 (setq i 1)
  29.                 (while (> ssl 0)
  30.                         (setq i (+ 1 i))
  31.                         (princ"\r")(princ i)
  32.                         (setq temp (ssname sset (setq ssl (1- ssl))))
  33.                         (setq tempstring (cdr(assoc 2 (entget temp))))
  34.                         (setq tempstring1 (cdr(assoc 8 (entget temp))))
  35.                         (if (and (/= tempstring nil)(= tempstring1 "WINDOW"))

  36.                             (progn
  37.                                 (if (= (substr tempstring 1 5)  "_WBLK")
  38.                                 (ssadd temp nsset)
  39.                                 )
  40.                                 (if (= (substr tempstring 1 5)  "_DBLK")
  41.                                 (ssadd temp nsset)
  42.                                 )
  43.                                 (if (= (substr tempstring 1 2)  "M_")
  44.                                 (ssadd temp nsset)
  45.                                 )
  46.                                 (if (= (substr tempstring 1 2)  "W_")
  47.                                 (ssadd temp nsset)
  48.                                 )
  49.                              )
  50.                         )
  51.                 )
  52.                 (setq ssl (sslength nsset)
  53.                 sset nsset
  54.                 unctr 0
  55.                 )
  56.                 (princ "一共找到 ")
  57.                 (princ ssl)
  58.                 (princ " 个门窗")
  59.                 )
  60.         ;______于插入点出标过梁_____
  61.                 (defun wr_gl()
  62.                         (command "LINETYPE" "S" "DASHDOT" NIL)
  63.                         (command "layer" "m" "GL" "c" "magenta" "GL" nil)
  64.                         (command "style" "GL" "宋体" "0" "1.0" "0" "n" "n" )
  65.                         ;(if ( = (check_table "layer" "gl") nil)(command "layer" "m" "gl" "c" "133" "GL" nil))
  66.                         ;(if (/= (check_table "layer" "gl") nil)(setvar "clayer" "gl"))
  67.                         ;(if ( = (check_table "style" "romand") nil)(command "style" "romand" "romand" "0" "0.6" "0" "n" "n" "n" ))
  68.                         ;(if (/= (check_table "style" "romand") nil)(setvar "textstyle" "romand"))
  69. ;                        (myid)
  70.                         (command "_osnap" "none")        
  71.                         (setq txthigh (* 3 scale))               
  72.                         (setq sslen (sslength sset))
  73.                                 (if (= sslen 0)(princ"\n没有选到门窗?!"))
  74.                                 (while (> sslen 0)
  75.                                 (princ ".")
  76.                                 (setq temp (entget (ssname sset (setq sslen (1- sslen)))))
  77.                                 (setq pt0 (cdr (assoc 10 temp)))
  78.                                 (setq xs (abs(cdr (assoc 41 temp))))
  79.                                 (setq ys (cdr (assoc 42 temp)))
  80.                                 (setq iscale (cdr (assoc 50 temp)))
  81.                                 (setq iscale (* iscale (/ 180 pi)))
  82.                                
  83.                                         ;----------计算门窗长度
  84.                                         (setq lh (/ xs 100))
  85.                                        
  86.                                          
  87.                                         ;(princ ttxt)
  88.                                         ;-------------计算文字位置
  89.                                         (if (= 180 iscale) (setq txt_id 0))
  90.                                         (if (= 0 iscale )  (setq txt_id 0))
  91.                                         (if (= 90  iscale) (setq txt_id 1))
  92.                                         (if (= 270 iscale) (setq txt_id 1))
  93.                                         (setq ftxt "GL4")
  94.                                         (setq mtxt (rtos lh))
  95.                                         (if (/= loadid 1)(progn
  96.                                                 (if(= txt_id 0)(setq ltxt "1"))
  97.                                                 (if(= txt_id 1)(setq ltxt "3"))
  98.                                         ));endif
  99.                                         (if (= loadid 1)(progn
  100.                                                 (if(= txt_id 0)(setq ltxt "3"))
  101.                                                 (if(= txt_id 1)(setq ltxt "1"))
  102.                                         ));endif
  103.                                         (setq ttxt (strcat ftxt mtxt ltxt))
  104.                                         (if (= mtxt "9")(setq ttxt "GL4101a"))
  105.                                         (if (= mtxt "8")(setq ttxt "GL4081"))
  106.                                         (setq tempx (nth 0 pt0))
  107.                                         (setq tempy (nth 1 pt0))
  108.                                         (if (= txt_id 0)
  109.                                         (
  110.                                         progn
  111.                                         (setq tempyy (+ 350 tempy))
  112.                                         (setq txt_pt (list tempx tempyy))
  113.                                         (command "text" "j" "m" txt_pt txthigh "0" ttxt nil nil)
  114.                                         ))
  115.                                         (if (= txt_id 1)
  116.                                         (
  117.                                         progn
  118.                                         (setq tempxx (- tempx 350))
  119.                                         (setq txt_pt (list tempxx tempy))
  120.                                         (command "text" "j" "m" txt_pt txthigh "90" ttxt nil nil)
  121.                                         ))
  122.                                        
  123.                                         ;-------------计算过梁线位置及长度
  124.                                         (setq dx (+ (/ xs 2) 250))
  125.                                         ;(princ dx)
  126.                                         (if (= txt_id 0)
  127.                                         (
  128.                                         progn
  129.                                         (setq tempxx1 (- tempx dx))
  130.                                         (setq tempxx2 (+ tempx dx))
  131.                                         (setq glpt1 (list tempxx1 tempy))
  132.                                         (setq glpt2 (list tempxx2 tempy))
  133.                                         (command "pline" glpt1 "w" "80" "80" glpt2 nil)  
  134.                                         ))  
  135.                                         (if (= txt_id 1)
  136.                                         (
  137.                                         progn
  138.                                         (setq tempyy1 (- tempy dx))
  139.                                         (setq tempyy2 (+ tempy dx))
  140.                                         (setq glpt1 (list tempx tempyy1))
  141.                                         (setq glpt2 (list tempx tempyy2))
  142.                                         (command "pline" glpt1 "w" "80" "80" glpt2 nil)  
  143.                                         ))                                      
  144.                                
  145.                                 )
  146.                                
  147. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-3-27 21:14:35 | 显示全部楼层
能不能搞一个现成的贴出来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 444个

财富等级: 日进斗金

发表于 2003-4-11 20:44:25 | 显示全部楼层
天正建筑5.5的是有一个自定义对象的.可以提供DXF组码.利用它也可以用的.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-18 23:03 , Processed in 0.461828 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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