明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5466|回复: 10

[函数] 画梁时,在梁线中间自动标上梁截面(200x600)

[复制链接]
发表于 2013-3-18 21:10:55 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 OWEN7 于 2013-3-19 20:49 编辑

rt,请高手帮忙写一个这样的lisp,。我也在酝酿中,欢迎提供思路

本帖子中包含更多资源

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

x
发表于 2013-3-19 00:01:15 | 显示全部楼层
帮顶一下
 楼主| 发表于 2013-3-19 20:49:56 | 显示全部楼层
顶一个,慢慢来吧。
发表于 2013-3-19 22:14:57 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2013-3-19 22:21:58 | 显示全部楼层
院长如果能将集中标注与原位标注断面直接搞到梁边上那才牛B
发表于 2013-3-20 08:15:49 | 显示全部楼层
本帖最后由 夏生生 于 2013-3-21 08:33 编辑

自己改改,例如梁宽的设置当高度大于某值时取某值,根据习惯自己改
;;;回复网友点评
本来就不是用来画梁的程序,用sap2000的自然知道本程序的妙用,呵呵。梁宽的判断很简单,加个cons即可,不同单位不同工程对梁宽有不同的要求,只是初定截面罢了
  1. ;;;&&&&&&&&&&开始获取所有图层列表函数&&&&&&&&&&
  2. (defun get_layer_list( / lay_name layer_list)
  3.   (setq layer_list nil)
  4.   (while (setq lay_name (cdr (assoc 2 (tblnext "layer"))))
  5.     (setq layer_list (cons lay_name layer_list))
  6.     )
  7.   (tblnext "layer" t)
  8.   layer_list
  9.   )
  10. ;;; &&&&&&&&&&开始检查是否存在图层,如无创建之函数&&&&&&&&&&
  11. ;;; =============================================
  12. ;;;      通用函数  检查是否存在图层,如无创建之
  13. ;;; 参数:l_p------打印标志(整型) 如果设置为 0,则不打印此图层
  14. ;;;      l_l------线型(字符串)
  15. ;;;      l_s------图层状态(整型)
  16. ;;;      l_n------图层名(字符串)
  17. (defun ly_mak (l_p l_l l_s l_n / L_C)
  18.   (SETQ L_C(LENGTH (VL-REMOVE-IF-NOT '(LAMBDA (X)(wcmatch  X "*0X*0"))(get_layer_list))))
  19.   (if (= (tblobjname "LAYER" l_n) nil)
  20.     (progn
  21.       (entmake (list (cons 0 "LAYER")
  22.                      (cons 100 "AcDbSymbolTableRecord")
  23.                      (cons 100 "AcDbLayerTableRecord")
  24.                      (if l_p
  25.                        (cons 290 l_p)
  26.                        '(290 . 1)
  27.                      )                        ; _ 结束if
  28.                      (if l_l
  29.                        (cons 6 l_l)
  30.                        '(6 . "CONTINUOUS")
  31.                      )                        ; _ 结束if
  32.                        (cons 62 (1+ l_c))
  33.                      (if l_s
  34.                        (cons 70 l_s)
  35.                        '(70 . 0)
  36.                      )                        ; _ 结束if
  37.                      (cons 2 l_n)
  38.                )                        ; _ 结束list
  39.       )                                        ; _ 结束entmake
  40.     )                                        ; _ 结束progn
  41.   )                                        ; _ 结束if

  42. )
  43. ;;; _ 结束defun
  44. ;;; &&&&&&&&&&开始创建单行文字函数&&&&&&&&&&
  45. ;;; 参数:l_n------图层名(字符串)
  46. ;;;      t_10------第一对齐点,如t_72或t_73非零,则该值忽略(点)
  47. ;;;      t_t------文字本身(字符串)
  48. ;;;      t_h------文字高度(整型)
  49. ;;;      t_w------宽度因子(实型)
  50. ;;;      t_st------文字样式(字符串)
  51. ;;;      t_50------倾斜角度(整型)
  52. ;;;      t_72------水平文字对正类型
  53. ;;;      t_73-------垂直文字对正类型
  54. ;;;      t_11------第二对齐点,如t_72和t_73为零,则该值忽略(点)
  55. (defun t_mak (l_n t_10 t_11 t_t t_50 t_72 t_73 t_h t_w t_st /)
  56.   (entmake (list '(0 . "text")
  57.                  '(100 . "AcDbEntity")
  58.                  (cons 8 l_n)
  59.                  '
  60.                   (100 . "AcDbText")
  61.                  (cons 10 t_10)
  62.                  (cons 1 t_t)
  63.                  (cons 40 t_h)
  64.                  (cons 41 t_w)
  65.                  (cons 7 t_st)
  66.                  (cons 72 t_72)
  67.                  (cons 11 t_11)
  68.                  (cons 50 t_50)
  69.                  (cons 73 t_73)
  70.            )                                ; _ 结束list
  71.   )                                        ; _ 结束entmake

  72. )
  73. ;;; _ 结束defun
  74. ;;;线中点平移
  75. (defun mv_midpt (pt1 pt2 ang dist / )
  76.   (polar (mapcar '(lambda (x) (/ x 2)) (mapcar '+ pt1 pt2)) ang dist)
  77.   )
  78. (defun c:yjk( / pt1 pt2 ang dist b h l_n)
  79.   (SETVAR "OSMODE" 163)
  80.   (WHILE
  81.   (SETQ PT1 (GETPOINT "\n选择起始点:"))
  82.   (SETQ PT2 (GETPOINT pt1 "\n选择结束点:"))
  83.   (setq ang (angle pt1 pt2)
  84.         dist (distance pt1 pt2)
  85.         b 200
  86.         h (if (< (setq h (* (fix (/ dist 12 50)) 50))400) 400  h)
  87.         l_n (strcat (itoa b) "X" (itoa h)))
  88.   (ly_mak nil nil nil l_n)
  89.   (t_mak l_n '(0 0 0) (mv_midpt pt1 pt2 (+ (/ pi 2) ang) 100) l_n ang 1 0 250 0.75 "standard")
  90.   (t_mak l_n '(0 0 0) (mv_midpt pt1 pt2 (- ang (/ pi 2)) 400) (STRCAT "梁跨"(RTOS DIST) "mm") ang 1 0 250 0.75 "standard")
  91.   (entmake (list '(0 . "LINE") (cons 8 l_n) (cons 10 pt1)(cons 11 pt2)))
  92.   )
  93.   (PRINC)
  94.   )

点评

但是不能判断梁宽,也不能画梁,呵呵  发表于 2013-3-20 23:22
这个东西有意思。自动根据梁跨确实梁高  发表于 2013-3-20 10:28
发表于 2013-3-20 09:28:46 | 显示全部楼层
院长威武,很方便,真是只有想不到,没有办不到
发表于 2013-3-20 14:17:04 | 显示全部楼层


如果能将原位标注与集中标注拉至靠梁边来就牛B

本帖子中包含更多资源

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

x
 楼主| 发表于 2013-3-30 12:59:45 | 显示全部楼层
有什么妙处,
发表于 2015-8-11 09:35:22 | 显示全部楼层
楼主现在还在做设计吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 08:40 , Processed in 0.171959 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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