明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1441|回复: 3

[提问] command命令格式,改为entmake格式后,有bug,哪位帮忙改改

[复制链接]
发表于 2014-8-14 10:14 | 显示全部楼层 |阅读模式
参考网上兄弟做的初始化软件,原来使用command命令,后来嫌速度慢,又改为了entmake格式的,测试了下,在标注设置部分有bug,哪位仁兄帮忙给改一下,下面是源码
  1. ;0-初始化-csh
  2. ;csh.lsp
  3. ;对CAD绘图的环境进行初始化,建立必要的图层及字体和标注样式
  4. ;2014/08/07 by wjnnan 整理
  5. ;2014/08/14 修改为entmake格式
  6. ;感谢原作者wxh5330 和 tranney

  7. (defun c:csh ( / orig_blip orig_cmd orig_osnap orig_layer); 指定函式名称
  8.        (prinC "\n绘图环境初始化开始")
  9.        (setvar "CURSORSIZE" 100)             ;将屏幕十字光标的大小设为100%
  10.        (setvar "ACADLSPASDOC" 1)             ;将 acad.lsp 载入到每一个打开的图形中
  11.        (setvar "ANGDIR" 1)                   ;设置正角度的方向为顺时针
  12.        (setvar "AUNITS" 0)                   ;设置角度单位为十进位度数
  13.        (setvar "CMLSCALE" 20.0000)           ;设线宽为公制              
  14.        (setvar "GRIDMODE" 0)                 ;关闭栅格
  15.        (setvar "LTSCALE" 1.0000)             ;设置全局线型比例为1.0000
  16.        (setvar "LUNITS" 2)                   ;设置线性单位为小数
  17.        (setvar "LWDISPLAY" 1)                ;显示线宽
  18.        (setvar "LWDEFAULT" 25)               ;设置默认线宽的值为25
  19.        (setvar "LWUNITS" 1)                  ;设线宽单位以毫米显示
  20.        (setvar "MEASUREINIT" 1)              ;设置初始图形单位为公制
  21.        (setvar "PSLTSCALE" 1)                ;设图纸空间的线型比例为1:1
  22.        (setvar "SNAPMODE" 0)                 ;关闭"捕捉"方式
  23.        (setvar "TOOLTIPS" 1)                 ;显示工具栏提示
  24.        (setvar "TRACEWID" 0.2)               ;设置宽线的默认宽度为0.2MM
  25.        (setvar "TRAYICONS" 1)                ;控制是否在状态栏上显示系统托盘
  26.        (setvar "TRAYNOTIFY" 1)               ;控制是否在状态栏系统托盘上显示服务通知
  27.        (setvar "ISAVEBAK" 1)                 ;控制备份文件 (BAK) 的创建。    1,创建    0,不创建         
  28.        (setvar "SAVETIME" 15)                ;设置自动保存时间
  29.        ;(setvar "VIEWRES" 5000)               ;设置圆弧和圆的平滑度
  30.        (setvar "FILEDIA" 1)                  ;0,为命令行提示;1,为对话框提示
  31. (setvar "APERTURE" 25)                ;以像素为单位设置靶框显示尺寸。靶框是绘图命令中使用的选择工具。初始值:10
  32.        (setvar "PICKBOX" 8)                  ;控制拾取框大小
  33.        (setvar "Vtenable" 0)                 ;窗口缓冲速度
  34.        (setvar "qaflags" 0)                  ;取消选择先后顺序
  35.        (setenv "DefaultFormatForSave" "24") ;设置默认保存格式2004 24的16进制=0x18 格式2000 12的16进制=0x0C 格式R12 1的16进制=01
  36.        (COMMAND  "OSMODE"  "4279" )           ;常用捕捉打开
  37.        (command "VIEWRES" "y" 5000 )          ;设置圆弧和圆的平滑度
  38.     (setq orig_blip (getvar "blipmode")); 获取系统变数的初始值
  39.     (setq orig_cmd (getvar "cmdecho"))
  40.     (setq orig_osnap (getvar "osmode"))
  41.     (setq orig_layer (getvar "clayer"))
  42.     (setvar "blipmode" 0); 设置系统变数
  43.     (setvar "cmdecho" 0)
  44.     (setvar "osmode" 0)

  45. ;;;;判断及创建图层
  46. ;;;(defun csh_lay()
  47. ;;;(setvar "cmdecho" 0)
  48. ;;;(if (= (tblsearch "layer" "AXIS") nil)
  49. ;;;  (command "layer" "m" "AXIS" "c" "1" "" "lt" "ACAD_ISo04W100" "" ""));                  轴线
  50. ;;;
  51. ;;;(if (= (tblsearch "layer" "AXIS_DIM") nil)  
  52. ;;;(command "layer" "m" "AXIS_DIM" "c" "3" "" "lt" "CONTINUOUS" "" ""));          轴线标注
  53. ;;;
  54. ;;;(if (= (tblsearch "layer" "AXIS_TEXT") nil)   
  55. ;;;(command "layer" "m" "AXIS_TEXT" "c" "2" "" "lt" "CONTINUOUS" "" ""));         轴线编号
  56. ;;;
  57. ;;;(if (= (tblsearch "layer" "COLU") nil)
  58. ;;;(command "layer" "m" "COLU" "c" "11" "" "lt" "CONTINUOUS" "" ""));             柱子
  59. ;;;
  60. ;;;(if (= (tblsearch "layer" "COLU_DASH") nil)   
  61. ;;;(command "layer" "m" "COLU_DASH" "c" "11" "" "lt" "DASHED" "" ""));              柱子虚线
  62. ;;;  
  63. ;;;(if (= (tblsearch "layer" "COLU_BR") nil)  
  64. ;;;(command "layer" "m" "COLU_BR" "c" "52" "" "lt" "CONTINUOUS" "" ""));          构造柱
  65. ;;;
  66. ;;;(if (= (tblsearch "layer" "COLU_NUM") nil)  
  67. ;;;  (command "layer" "m" "COLU_NUM" "c" "2" "" "lt" "CONTINUOUS" "" ""));          柱子编号
  68. ;;;  
  69. ;;;(if (= (tblsearch "layer" "COLU_HATCH") nil)  
  70. ;;;(command "layer" "m" "COLU_HATCH" "c" "8" "" "lt" "CONTINUOUS" "" ""));        柱子填充
  71. ;;;
  72. ;;;(if (= (tblsearch "layer" "BEAM") nil)  
  73. ;;;  (command "layer" "m" "BEAM" "c" "4" "" "lt" "DASHED" "" ""));                    主梁
  74. ;;;  
  75. ;;;(if (= (tblsearch "layer" "BEAM_CON") nil)  
  76. ;;;(command "layer" "m" "BEAM_CON" "c" "4" "" "lt" "CONTINUOUS" "" ""));          主梁实线
  77. ;;;  
  78. ;;;(if (= (tblsearch "layer" "BEAM_TEXT_HOR") nil)  
  79. ;;;(command "layer" "m" "BEAM_TEXT_HOR" "c" "2" "" "lt" "CONTINUOUS" "" ""));     主梁水平文字
  80. ;;;  
  81. ;;;(if (= (tblsearch "layer" "BEAM_TEXT_VER") nil)
  82. ;;;(command "layer" "m" "BEAM_TEXT_VER" "c" "100" "" "lt" "CONTINUOUS" "" ""));   主梁竖直文字
  83. ;;;
  84. ;;;(if (= (tblsearch "layer" "BEAM_WA") nil)
  85. ;;; (command "layer" "m" "BEAM_WA" "c" "21" "" "lt" "DASHED" "" ""));                连梁
  86. ;;;
  87. ;;;(if (= (tblsearch "layer" "BEAM_WA_CON") nil)
  88. ;;;  (command "layer" "m" "BEAM_WA_CON" "c" "21" "" "lt" "CONTINUOUS" "" ""));      连梁实线
  89. ;;;  
  90. ;;;(if (= (tblsearch "layer" "BEAM_WA_TEXT") nil)
  91. ;;;(command "layer" "m" "BEAM_WA_TEXT" "c" "100" "" "lt" "CONTINUOUS" "" ""));    连梁文字
  92. ;;;
  93. ;;;
  94. ;;;(if (= (tblsearch "layer" "BEAM_SE") nil)
  95. ;;;  (command "layer" "m" "BEAM_SE" "c" "144" "" "lt" "DASHED" "" ""));                次梁
  96. ;;;  
  97. ;;;(if (= (tblsearch "layer" "BEAM_SE_CON") nil)
  98. ;;;(command "layer" "m" "BEAM_SE_CON" "c" "144" "" "lt" "CONTINUOUS" "" ""));      次梁实线
  99. ;;;  
  100. ;;;(if (= (tblsearch "layer" "BEAM_SE_TEXT_HOR") nil)
  101. ;;;(command "layer" "m" "BEAM_SE_TEXT_HOR" "c" "100" "" "lt" "CONTINUOUS" "" "")); 次梁水平文字
  102. ;;;(if (= (tblsearch "layer" "BEAM_SE_TEXT_VER") nil)  
  103. ;;;(command "layer" "m" "BEAM_SE_TEXT_VER" "c" "2" "" "lt" "CONTINUOUS" "" ""));   次梁竖直文字
  104. ;;;
  105. ;;;  ;(command "layer" "m" "S_WALL" "c" "94" "" "lt" "CONTINUOUS" "" "");           砼墙
  106. ;;;  ;(command "layer" "m" "S_WALL_DASH" "c" "94" "" "lt" "DASHED" "" "");            砼墙虚线
  107. ;;;  ;(command "layer" "m" "S_WALL_DIM" "c" "7" "" "lt" "CONTINUOUS" "" "");        砼墙标注
  108. ;;;  ;(command "layer" "m" "S_WALL_NUM" "c" "100" "" "lt" "CONTINUOUS" "" "");      砼墙编号
  109. ;;;  ;(command "layer" "m" "S_WALL_HATCH" "c" "8" "" "lt" "CONTINUOUS" "" "");      砼墙填充
  110. ;;;  ;(command "layer" "m" "S_WALL_BR" "c" "52" "" "lt" "CONTINUOUS" "" "");        砖墙
  111. ;;;  ;(command "layer" "m" "S_WALL_BR_DASH" "c" "52" "" "lt" "DASHED" "" "");         砖墙虚线
  112. ;;;
  113. ;;;  ;(command "layer" "m" "STAIR" "c" "3" "" "lt" "CONTINUOUS" "" "");             楼梯
  114. ;;;  ;(command "layer" "m" "STAIR_TEXT" "c" "2" "" "lt" "CONTINUOUS" "" "");        楼梯文字
  115. ;;;  ;(command "layer" "m" "STAIR_DIM" "c" "3" "" "lt" "CONTINUOUS" "" "");         楼梯标注
  116. ;;;
  117. ;;;
  118. ;;;(if (= (tblsearch "layer" "FLOOR") nil)  
  119. ;;;  (command "layer" "m" "FLOOR" "c" "124" "" "lt" "CONTINUOUS" "" ""));           楼板
  120. ;;;  
  121. ;;;(if (= (tblsearch "layer" "FLOOR_DOWN_REIN") nil)  
  122. ;;;(command "layer" "m" "FLOOR_DOWN_REIN" "c" "15" "" "lt" "CONTINUOUS" "" ""));  楼板正筋
  123. ;;;  
  124. ;;;(if (= (tblsearch "layer" "FLOOR_DOWN_DIM") nil)  
  125. ;;;(command "layer" "m" "FLOOR_DOWN_DIM" "c" "3" "" "lt" "CONTINUOUS" "" ""));    楼板正筋标注
  126. ;;;
  127. ;;;(if (= (tblsearch "layer" "FLOOR_DOWN_NUM") nil)  
  128. ;;; (command "layer" "m" "FLOOR_DOWN_NUM" "c" "2" "" "lt" "CONTINUOUS" "" ""));    楼板正筋文字
  129. ;;;
  130. ;;;(if (= (tblsearch "layer" "FLOOR_UP_REIN") nil)  
  131. ;;;  (command "layer" "m" "FLOOR_UP_REIN" "c" "1" "" "lt" "CONTINUOUS" "" ""));     楼板负筋
  132. ;;;
  133. ;;;(if (= (tblsearch "layer" "FLOOR_UP_DIM") nil)  
  134. ;;; (command "layer" "m" "FLOOR_UP_DIM" "c" "3" "" "lt" "CONTINUOUS" "" ""));      楼板负筋标注
  135. ;;;  
  136. ;;;(if (= (tblsearch "layer" "FLOOR_UP_NUM") nil)
  137. ;;;(command "layer" "m" "FLOOR_UP_NUM" "c" "100" "" "lt" "CONTINUOUS" "" ""));    楼板负筋文字
  138. ;;;
  139. ;;;
  140. ;;;  ;(command "layer" "m" "HOLE" "c" "190" "" "lt" "CONTINUOUS" "" "");            洞口
  141. ;;;  ;(command "layer" "m" "HOLE_DIM" "c" "3" "" "lt" "CONTINUOUS" "" "");          洞口标注
  142. ;;;  ;(command "layer" "m" "HOLE_NUM" "c" "2" "" "lt" "CONTINUOUS" "" "");          洞口编号
  143. ;;;  ;(command "layer" "m" "HOLE_HATCH" "c" "9" "" "lt" "CONTINUOUS" "" "");        洞口填充
  144. ;;;
  145. ;;;(if (= (tblsearch "layer" "BASE") nil)
  146. ;;;  (command "layer" "m" "BASE" "c" "4" "" "lt" "CONTINUOUS" "" ""));              基础
  147. ;;;  
  148. ;;;(if (= (tblsearch "layer" "BASE_DIM") nil)
  149. ;;;(command "layer" "m" "BASE_DIM" "c" "3" "" "lt" "CONTINUOUS" "" ""));          基础标注
  150. ;;;  
  151. ;;;(if (= (tblsearch "layer" "BASE_NUM") nil)
  152. ;;;(command "layer" "m" "BASE_NUM" "c" "2" "" "lt" "CONTINUOUS" "" ""));          基础编号
  153. ;;;
  154. ;;;(if (= (tblsearch "layer" "PILE") nil)
  155. ;;;  (command "layer" "m" "PILE" "c" "150" "" "lt" "CONTINUOUS" "" ""));            桩
  156. ;;;  
  157. ;;;(if (= (tblsearch "layer" "PILE_DASH") nil)
  158. ;;;(command "layer" "m" "PILE_DASH" "c" "150" "" "lt" "DASHED" "" ""));             桩虚线
  159. ;;;
  160. ;;;
  161. ;;;  ;(command "layer" "m" "STEEL" "c" "60" "" "lt" "CONTINUOUS" "" "");            钢结构实线
  162. ;;;  ;(command "layer" "m" "STEEL_DASH" "c" "60" "" "lt" "DASHED" "" "");             钢结构虚线
  163. ;;;
  164. ;;;  ;(command "layer" "m" "BOLT" "c" "6" "" "lt" "CONTINUOUS" "" "");              螺栓
  165. ;;;  ;(command "layer" "m" "BOLT_DIM" "c" "3" "" "lt" "CONTINUOUS" "" "");          螺栓标注
  166. ;;;  ;(command "layer" "m" "BOLT_NUM" "c" "2" "" "lt" "CONTINUOUS" "" "");          螺栓编号
  167. ;;;
  168. ;;;  ;(command "layer" "m" "WELD" "c" "40" "" "lt" "CONTINUOUS" "" "");             焊缝
  169. ;;;  ;(command "layer" "m" "WELD_DIM" "c" "3" "" "lt" "CONTINUOUS" "" "");          焊缝标注
  170. ;;;  ;(command "layer" "m" "WELD_NUM" "c" "2" "" "lt" "CONTINUOUS" "" "");          焊缝文字
  171. ;;;
  172. ;;;  ;(command "layer" "m" "BURY" "c" "140" "" "lt" "CONTINUOUS" "" "");            预埋件
  173. ;;;  ;(command "layer" "m" "BURY_DIM" "c" "3" "" "lt" "CONTINUOUS" "" "");          预埋件标注
  174. ;;;  ;(command "layer" "m" "BURY_NUM" "c" "2" "" "lt" "CONTINUOUS" "" "");          预埋件编号
  175. ;;;
  176. ;;;  ;(command "layer" "m" "TAB" "c" "7" "" "lt" "CONTINUOUS" "" "");               表格线
  177. ;;;  ;(command "layer" "m" "TAB_TEXT" "c" "2" "" "lt" "CONTINUOUS" "" "");          表格文字
  178. ;;;
  179. ;;;(if (= (tblsearch "layer" "REIN") nil)
  180. ;;;  (command "layer" "m" "REIN" "c" "1" "" "lt" "CONTINUOUS" "" ""));              钢筋
  181. ;;;  
  182. ;;;(if (= (tblsearch "layer" "TEXT") nil)
  183. ;;;(command "layer" "m" "TEXT" "c" "7" "" "lt" "CONTINUOUS" "" ""));              文字
  184. ;;;
  185. ;;;(if (= (tblsearch "layer" "DIM") nil)
  186. ;;; (command "layer" "m" "DIM" "c" "3" "" "lt" "CONTINUOUS" "" ""));               尺寸
  187. ;;;  
  188. ;;;(if (= (tblsearch "layer" "NUM") nil)
  189. ;;;(command "layer" "m" "NUM" "c" "2" "" "lt" "CONTINUOUS" "" ""));               编号
  190. ;;;  
  191. ;;;;(command "layer" "m" "FRAME" "c" "7" "" "lt" "CONTINUOUS" "" "");             图框
  192. ;;;  ;(command "layer" "m" "THICK" "c" "7" "" "lt" "CONTINUOUS" "" "");             粗线
  193. ;;;  ;(command "layer" "m" "THIN" "c" "7" "" "lt" "CONTINUOUS" "" "");              细线
  194. ;;;
  195. ;;;  ;(command "layer" "m" "EDGE" "c" "100" "" "lt" "CONTINUOUS" "" "");            轮廓线
  196. ;;;  ;(command "layer" "m" "NOTE" "c" "100" "" "lt" "CONTINUOUS" "" "");            文字说明
  197. ;;;  ;(command "layer" "m" "HATCH2" "c" "254" "" "lt" "CONTINUOUS" "" "");          图例填充
  198. ;;;
  199. ;;;(if (= (tblsearch "layer" "st") nil)  
  200. ;;;(command "layer" "m" "st" "c" "6" "" "lt" "CONTINUOUS" "" "p" "n" "" "")); 修改、修订(不打印)
  201. ;;;  
  202. ;;;(if (= (tblsearch "layer" "NO_PLOT") nil)  
  203. ;;;(command "layer" "m" "NO_PLOT" "c" "14" "" "lt" "CONTINUOUS" "" "p" "n" "" ""));打印线(不打印)
  204. ;;;)
  205. ;;;   
  206. ;;;
  207. ;;;
  208. ;;;;判断及创建字体
  209. ;;;(defun csh_sty()
  210. ;;;  (if (= (tblsearch "style" "TSSD_Rein") nil)
  211. ;;;    (progn
  212. ;;;      (princ "\n建立TSSD_Rein字体并设为当前")
  213. ;;;      (command "style" "TSSD_Rein" "tssdeng.shx,hztxt.shx" "0.0" "0.7" "" "" "" "")
  214. ;;;    )
  215. ;;;    (progn
  216. ;;;       (command "style" "TSSD_Rein" "tssdeng.shx,hztxt.shx" "0.0" "0.7" "" "" "" "")
  217. ;;;      
  218. ;;;      (princ "\n检测到TSSD_Rein字体,将其设为当前。")
  219. ;;;    )
  220. ;;;  )
  221. ;;;(if (= (tblsearch "STYLE" "hz") nil);"判断hz字型是否存在"      
  222. ;;;  (command "style" "hz" "txt.shx,hztxt.shx" 250 0.7 0 "n" "n" "n");"设置字型hz"
  223. ;;;  )
  224. ;;;
  225. ;;;(if (= (tblsearch "STYLE" "hx") nil);"判断hx字型是否存在"   
  226. ;;;  (command "style" "hx" "huaxin.shx,hxhztxt.shx" 250 0.7 0 "n" "n" "n");"设置字型hx"
  227. ;;;  )
  228. ;;;
  229. ;;;(if (= (tblsearch "STYLE" "STANDARD") nil);"判断hx字型是否存在"   
  230. ;;;   (command "style" "STANDARD" "tssdeng.shx,hztxt.shx" "0.0" "0.7" "" "" "" "");"设置字型STANDARD"
  231. ;;;  )
  232. ;;;)
  233. ;;;
  234. ;;;
  235. ;;;
  236. ;;;
  237. ;;;
  238. ;;;

  239. ;判断及创建图层
  240. (defun csh_lay()
  241. (setvar "cmdecho" 0)
  242. ;创建线型,点划线
  243.   (entmake
  244.     (list '(0 . "LTYPE")
  245.         '(100 . "AcDbSymbolTableRecord")
  246.         '(100 . "AcDbLinetypeTableRecord")
  247.         (cons 2 "ACAD_ISO04W100")
  248.         '(3 . "ACAD_ISO04W100 ___ . ___ . ___ . ___ . ___")
  249.         '(70 . 0)
  250.         '(73 . 4)
  251.         '(40 . 18.5)
  252.         '(49 . 15)
  253.         '(74 . 0)
  254.         '(49 . -1.5)
  255.         '(74 . 0)
  256.         '(49 . 0.5)
  257.         '(74 . 0)
  258.         '(49 . -1.5)
  259.         '(74 . 0)
  260.   )
  261. )
  262. ;创建线型,虚线
  263. (entmake
  264.   (list        '(0 . "LTYPE")
  265.         '(100 . "AcDbSymbolTableRecord")
  266.         '(100 . "AcDbLinetypeTableRecord")
  267.         (cons 2 "DASHED")
  268.         '(3 . "DASHED __ __ __ __ __ __ __ __ __")
  269.         '(70 . 0)
  270.         '(73 . 2)
  271.         '(40 . 6.0)
  272.         '(49 . 4.0)
  273.         '(74 . 0)
  274.         '(49 . -2.0)
  275.         '(74 . 0)
  276.   )
  277. )
  278. ;轴线
  279. (if (null (tblobjname "LAYER" "AXIS") )
  280. (entmake (list '(0 . "LAYER")
  281.         '(100 . "AcDbSymbolTableRecord")
  282.         '(100 . "AcDbLayerTableRecord")
  283.         '(70 . 0)
  284.         '(6 . "ACAD_ISO04W100")   ;线型
  285.         (cons 2 "AXIS")
  286.     '(62 . 1)  ;颜色
  287.         )
  288.     )
  289. );if
  290. ;柱子
  291. (if (null (tblobjname "LAYER" "COLU") )
  292. (entmake (list '(0 . "LAYER")
  293.         '(100 . "AcDbSymbolTableRecord")
  294.         '(100 . "AcDbLayerTableRecord")
  295.         '(70 . 0)
  296.         '(6 . "CONTINUOUS")   ;线型
  297.         (cons 2 "COLU")
  298.     '(62 . 7)  ;颜色
  299.         )
  300.     )
  301. );if
  302. ;柱子填充
  303. (if (null (tblobjname "LAYER" "COLU_HATCH") )
  304. (entmake (list '(0 . "LAYER")
  305.         '(100 . "AcDbSymbolTableRecord")
  306.         '(100 . "AcDbLayerTableRecord")
  307.         '(70 . 0)
  308.         '(6 . "CONTINUOUS")   ;线型
  309.         (cons 2 "COLU_HATCH")
  310.     '(62 . 2)  ;颜色
  311.         )
  312.     )
  313. );if
  314. ;柱子编号
  315. (if (null (tblobjname "LAYER" "COLU_NUM") )
  316. (entmake (list '(0 . "LAYER")
  317.         '(100 . "AcDbSymbolTableRecord")
  318.         '(100 . "AcDbLayerTableRecord")
  319.         '(70 . 0)
  320.         '(6 . "CONTINUOUS")   ;线型
  321.         (cons 2 "COLU_NUM")
  322.     '(62 . 2)  ;颜色
  323.         )
  324.     )
  325. );if
  326. ;主梁虚线
  327. (if (null (tblobjname "LAYER" "BEAM") )
  328. (entmake (list '(0 . "LAYER")
  329.         '(100 . "AcDbSymbolTableRecord")
  330.         '(100 . "AcDbLayerTableRecord")
  331.         '(70 . 0)
  332.         '(6 . "DASHED")   ;线型
  333.         (cons 2 "BEAM")
  334.     '(62 . 4)  ;颜色
  335.         )
  336.     )
  337. );if
  338. ;主梁实线
  339. (if (null (tblobjname "LAYER" "BEAM_CON") )
  340. (entmake (list '(0 . "LAYER")
  341.         '(100 . "AcDbSymbolTableRecord")
  342.         '(100 . "AcDbLayerTableRecord")
  343.         '(70 . 0)
  344.         '(6 . "CONTINUOUS")   ;线型
  345.         (cons 2 "BEAM_CON")
  346.     '(62 . 4)  ;颜色
  347.         )
  348.     )
  349. );if
  350. ;主梁水平文字
  351. (if (null (tblobjname "LAYER" "BEAM_TEXT_HOR") )
  352. (entmake (list '(0 . "LAYER")
  353.         '(100 . "AcDbSymbolTableRecord")
  354.         '(100 . "AcDbLayerTableRecord")
  355.         '(70 . 0)
  356.         '(6 . "CONTINUOUS")   ;线型
  357.         (cons 2 "BEAM_TEXT_HOR")
  358.     '(62 . 2)  ;颜色
  359.         )
  360.     )
  361. );if
  362. ;主梁垂直文字
  363. (if (null (tblobjname "LAYER" "BEAM_TEXT_VER") )
  364. (entmake (list '(0 . "LAYER")
  365.         '(100 . "AcDbSymbolTableRecord")
  366.         '(100 . "AcDbLayerTableRecord")
  367.         '(70 . 0)
  368.         '(6 . "CONTINUOUS")   ;线型
  369.         (cons 2 "BEAM_TEXT_VER")
  370.     '(62 . 100)  ;颜色
  371.         )
  372.     )
  373. );if
  374. ;次梁虚线
  375. (if (null (tblobjname "LAYER" "BEAM_SE") )
  376. (entmake (list '(0 . "LAYER")
  377.         '(100 . "AcDbSymbolTableRecord")
  378.         '(100 . "AcDbLayerTableRecord")
  379.         '(70 . 0)
  380.         '(6 . "DASHED")   ;线型
  381.         (cons 2 "BEAM_SE")
  382.     '(62 . 144)  ;颜色
  383.         )
  384.     )
  385. );if
  386. ;次梁实线
  387. (if (null (tblobjname "LAYER" "BEAM_SE_CON") )
  388. (entmake (list '(0 . "LAYER")
  389.         '(100 . "AcDbSymbolTableRecord")
  390.         '(100 . "AcDbLayerTableRecord")
  391.         '(70 . 0)
  392.         '(6 . "CONTINUOUS")   ;线型
  393.         (cons 2 "BEAM_SE_CON")
  394.     '(62 . 144)  ;颜色
  395.         )
  396.     )
  397. );if
  398. ;次梁水平文字
  399. (if (null (tblobjname "LAYER" "BEAM_SE_TEXT_HOR") )
  400. (entmake (list '(0 . "LAYER")
  401.         '(100 . "AcDbSymbolTableRecord")
  402.         '(100 . "AcDbLayerTableRecord")
  403.         '(70 . 0)
  404.         '(6 . "CONTINUOUS")   ;线型
  405.         (cons 2 "BEAM_SE_TEXT_HOR")
  406.     '(62 . 100)  ;颜色
  407.         )
  408.     )
  409. );if
  410. ;次梁垂直文字
  411. (if (null (tblobjname "LAYER" "BEAM_SE_TEXT_VER") )
  412. (entmake (list '(0 . "LAYER")
  413.         '(100 . "AcDbSymbolTableRecord")
  414.         '(100 . "AcDbLayerTableRecord")
  415.         '(70 . 0)
  416.         '(6 . "CONTINUOUS")   ;线型
  417.         (cons 2 "BEAM_SE_TEXT_VER")
  418.     '(62 . 2)  ;颜色
  419.         )
  420.     )
  421. );if
  422. ;连梁虚线
  423. (if (null (tblobjname "LAYER" "BEAM_WA") )
  424. (entmake (list '(0 . "LAYER")
  425.         '(100 . "AcDbSymbolTableRecord")
  426.         '(100 . "AcDbLayerTableRecord")
  427.         '(70 . 0)
  428.         '(6 . "DASHED")   ;线型
  429.         (cons 2 "BEAM_WA")
  430.     '(62 . 21)  ;颜色
  431.         )
  432.     )
  433. );if
  434. ;连梁实线
  435. (if (null (tblobjname "LAYER" "BEAM_WA_CON") )
  436. (entmake (list '(0 . "LAYER")
  437.         '(100 . "AcDbSymbolTableRecord")
  438.         '(100 . "AcDbLayerTableRecord")
  439.         '(70 . 0)
  440.         '(6 . "CONTINUOUS")   ;线型
  441.         (cons 2 "BEAM_WA_CON")
  442.     '(62 . 21)  ;颜色
  443.         )
  444.     )
  445. );if
  446. ;楼板
  447. (if (null (tblobjname "LAYER" "FLOOR") )
  448. (entmake (list '(0 . "LAYER")
  449.         '(100 . "AcDbSymbolTableRecord")
  450.         '(100 . "AcDbLayerTableRecord")
  451.         '(70 . 0)
  452.         '(6 . "CONTINUOUS")   ;线型
  453.         (cons 2 "FLOOR")
  454.     '(62 . 124)  ;颜色
  455.         )
  456.     )
  457. );if
  458. ;楼板正筋
  459. (if (null (tblobjname "LAYER" "FLOOR_DOWN_REIN") )
  460. (entmake (list '(0 . "LAYER")
  461.         '(100 . "AcDbSymbolTableRecord")
  462.         '(100 . "AcDbLayerTableRecord")
  463.         '(70 . 0)
  464.         '(6 . "CONTINUOUS")   ;线型
  465.         (cons 2 "FLOOR_DOWN_REIN")
  466.     '(62 . 15)  ;颜色
  467.         )
  468.     )
  469. );if
  470. ;楼板正筋标注
  471. (if (null (tblobjname "LAYER" "FLOOR_DOWN_DIM") )
  472. (entmake (list '(0 . "LAYER")
  473.         '(100 . "AcDbSymbolTableRecord")
  474.         '(100 . "AcDbLayerTableRecord")
  475.         '(70 . 0)
  476.         '(6 . "CONTINUOUS")   ;线型
  477.         (cons 2 "FLOOR_DOWN_DIM")
  478.     '(62 . 3)  ;颜色
  479.         )
  480.     )
  481. );if
  482. ;楼板正筋文字
  483. (if (null (tblobjname "LAYER" "FLOOR_DOWN_NUM") )
  484. (entmake (list '(0 . "LAYER")
  485.         '(100 . "AcDbSymbolTableRecord")
  486.         '(100 . "AcDbLayerTableRecord")
  487.         '(70 . 0)
  488.         '(6 . "CONTINUOUS")   ;线型
  489.         (cons 2 "FLOOR_DOWN_NUM")
  490.     '(62 . 2)  ;颜色
  491.         )
  492.     )
  493. );if
  494. ;楼板负筋
  495. (if (null (tblobjname "LAYER" "FLOOR_UP_REIN") )
  496. (entmake (list '(0 . "LAYER")
  497.         '(100 . "AcDbSymbolTableRecord")
  498.         '(100 . "AcDbLayerTableRecord")
  499.         '(70 . 0)
  500.         '(6 . "CONTINUOUS")   ;线型
  501.         (cons 2 "FLOOR_UP_REIN")
  502.     '(62 . 1)  ;颜色
  503.         )
  504.     )
  505. );if
  506. ;楼板负筋标注
  507. (if (null (tblobjname "LAYER" "FLOOR_UP_DIM") )
  508. (entmake (list '(0 . "LAYER")
  509.         '(100 . "AcDbSymbolTableRecord")
  510.         '(100 . "AcDbLayerTableRecord")
  511.         '(70 . 0)
  512.         '(6 . "CONTINUOUS")   ;线型
  513.         (cons 2 "FLOOR_UP_DIM")
  514.     '(62 . 3)  ;颜色
  515.         )
  516.     )
  517. );if
  518. ;楼板负筋文字
  519. (if (null (tblobjname "LAYER" "FLOOR_UP_NUM") )
  520. (entmake (list '(0 . "LAYER")
  521.         '(100 . "AcDbSymbolTableRecord")
  522.         '(100 . "AcDbLayerTableRecord")
  523.         '(70 . 0)
  524.         '(6 . "CONTINUOUS")   ;线型
  525.         (cons 2 "FLOOR_UP_NUM")
  526.     '(62 . 100)  ;颜色
  527.         )
  528.     )
  529. );if
  530. ;文字
  531. (if (null (tblobjname "LAYER" "TEXT") )
  532. (entmake (list '(0 . "LAYER")
  533.         '(100 . "AcDbSymbolTableRecord")
  534.         '(100 . "AcDbLayerTableRecord")
  535.         '(70 . 0)
  536.         '(6 . "CONTINUOUS")   ;线型
  537.         (cons 2 "TEXT")
  538.     '(62 . 7)  ;颜色
  539.         )
  540.     )
  541. );if
  542. ;尺寸标注
  543. (if (null (tblobjname "LAYER" "DIM") )
  544. (entmake (list '(0 . "LAYER")
  545.         '(100 . "AcDbSymbolTableRecord")
  546.         '(100 . "AcDbLayerTableRecord")
  547.         '(70 . 0)
  548.         '(6 . "CONTINUOUS")   ;线型
  549.         (cons 2 "DIM")
  550.     '(62 . 3)  ;颜色
  551.         )
  552.     )
  553. );if
  554. ;编号
  555. (if (null (tblobjname "LAYER" "NUM") )
  556. (entmake (list '(0 . "LAYER")
  557.         '(100 . "AcDbSymbolTableRecord")
  558.         '(100 . "AcDbLayerTableRecord")
  559.         '(70 . 0)
  560.         '(6 . "CONTINUOUS")   ;线型
  561.         (cons 2 "NUM")
  562.     '(62 . 2)  ;颜色
  563.         )
  564.     )
  565. );if
  566. ;审图(不打印)
  567. (if (null (tblobjname "LAYER" "审图(不打印)") )
  568. (entmake (list '(0 . "LAYER")
  569.         '(100 . "AcDbSymbolTableRecord")
  570.         '(100 . "AcDbLayerTableRecord")
  571.         '(70 . 0)
  572.         '(6 . "CONTINUOUS")   ;线型
  573.         (cons 2 "审图(不打印)")
  574.      '(62 . 6)  ;颜色
  575.      '(290 . 0) ;0为此图层不打印
  576.         )
  577.     )
  578. );if
  579. ;钢筋
  580. (if (null (tblobjname "LAYER" "REIN") )
  581. (entmake (list '(0 . "LAYER")
  582.         '(100 . "AcDbSymbolTableRecord")
  583.         '(100 . "AcDbLayerTableRecord")
  584.         '(70 . 0)
  585.         '(6 . "CONTINUOUS")   ;线型
  586.         (cons 2 "REIN")
  587.     '(62 . 1)  ;颜色

  588.         )
  589.     )
  590. );if
  591. );defun csh_lay


  592. ;判断及创建字体
  593. (defun csh_sty()
  594. (if (null (tblobjname "STYLE" "TSSD_Rein") )
  595. (progn
  596.       (princ "\n建立TSSD_Rein字体并设为当前")

  597. (entmake (list '(0 . "STYLE")
  598.         '(100 . "AcDbSymbolTableRecord")
  599.         '(100 . "AcDbTextStyleTableRecord")
  600.         '(70 . 0)
  601.     '(42 . 250) ;默认字高
  602.     '(3 . "tssdeng.shx")
  603.     '(4 . "hztxt.shx")
  604.         (cons 2 "TSSD_Rein")
  605.     '(40 . 250) ;字高
  606.     '(41 . 0.7) ;字宽比例
  607.     '(50 . 0.0) ;默认旋转角度
  608.         )
  609.     ))
  610. (progn
  611. (entmake (list '(0 . "STYLE")
  612.         '(100 . "AcDbSymbolTableRecord")
  613.         '(100 . "AcDbTextStyleTableRecord")
  614.         '(70 . 0)
  615.     '(42 . 250) ;默认字高
  616.     '(3 . "tssdeng.shx")
  617.     '(4 . "hztxt.shx")
  618.         (cons 2 "TSSD_Rein")
  619.     '(40 . 250) ;字高
  620.     '(41 . 0.7) ;字宽比例
  621.     '(50 . 0.0) ;默认旋转角度
  622.         )
  623.     )
  624.     (princ "\n检测到TSSD_Rein字体,将其设为当前字体")
  625.     )
  626. );if

  627. (if (null (tblobjname "STYLE" "hz") )
  628. (entmake (list '(0 . "STYLE")
  629.         '(100 . "AcDbSymbolTableRecord")
  630.         '(100 . "AcDbTextStyleTableRecord")
  631.         '(70 . 0)
  632.     '(42 . 250) ;默认字高
  633.     '(3 . "txt.shx")
  634.     '(4 . "hztxt.shx")
  635.         (cons 2 "hz")
  636.     '(40 . 250) ;字高
  637.     '(41 . 0.7) ;字宽比例
  638.     '(50 . 0.0) ;默认旋转角度
  639.         )
  640.     )
  641. );if


  642. (if (null (tblobjname "STYLE" "hx") )
  643. (entmake (list '(0 . "STYLE")
  644.         '(100 . "AcDbSymbolTableRecord")
  645.         '(100 . "AcDbTextStyleTableRecord")
  646.         '(70 . 0)
  647.     '(42 . 250) ;默认字高
  648.     '(3 . "huaxin.shx")
  649.     '(4 . "hxhztxt.shx")
  650.         (cons 2 "hx")
  651.     '(40 . 250) ;字高
  652.     '(41 . 0.7) ;字宽比例
  653.     '(50 . 0.0) ;默认旋转角度
  654.         )
  655.     )
  656. );if
  657. (if (null (tblobjname "STYLE" "STANDARD") )
  658. (entmake (list '(0 . "STYLE")
  659.         '(100 . "AcDbSymbolTableRecord")
  660.         '(100 . "AcDbTextStyleTableRecord")
  661.         '(70 . 0)
  662.     '(42 . 250) ;默认字高
  663.     '(3 . "tssdeng.shx")
  664.     '(4 . "hztxt.shx")
  665.         (cons 2 "STANDARD")
  666.     '(40 . 250) ;字高
  667.     '(41 . 0.7) ;字宽比例
  668.     '(50 . 0.0) ;默认旋转角度
  669.         )
  670.     )
  671. );if
  672. );defun csh_sty




  673. ; 建立DIM层,归并标注到DIM层
  674. (defun csh_bzgc(/ s2)
  675.    (setvar "cmdecho" 0)
  676. ;这部分:确定是否建立新图层
  677.    (if (= (tblsearch "layer" "DIM") nil) ;检查DIM层是否存在
  678. (entmake (list '(0 . "LAYER")
  679.         '(100 . "AcDbSymbolTableRecord")
  680.         '(100 . "AcDbLayerTableRecord")
  681.         '(70 . 0)
  682.         '(6 . "CONTINUOUS")   ;线型
  683.         (cons 2 "DIM")
  684.         '(62 . 3)  ;颜色
  685.         )
  686.     ));if
  687. ;这部分主程序
  688.    (setq s2 (ssget "X" '((-4 . "<or")(0 . "leader")(0 . "dimension")(0 . "arc_dimension")(-4 . "or>"))))
  689.    (if (= s2 nil) (princ "")
  690.        (progn
  691.           (command "change" s2 "" "P" "la" "0" ""   ;改变对象图层
  692.                           "_setbylayer" s2 "" "y" "y"      ;线型改为随层
  693.                           "change" s2 "" "P" "la" "DIM" "")  ;改变对象图层
  694.         );progn
  695.     );if   
  696.    (princ)
  697. );defun


  698. ;建立建筑标注标注界限块
  699. (defun dimblk1(/ p1 p2 mp p3 p4 ent1 ent2 ifdimblk )
  700.   (setq p1 (list 0 0)
  701. p2 (polar p1 (* 0.25 pi) 2)
  702. mp (list (* 0.5 (car p2)) (* 0.5 (cadr p2)))
  703. p3(list (- (car mp) 1.5) (cadr mp))
  704. p4(list (+ (car mp) 1.5) (cadr mp))
  705.    )
  706.   (command "line" p3 p4 "")
  707.   (setq ent1 (entlast))
  708.   (command "pline" p1 "w" 0.5 0.5 p2 "")
  709.   (setq ent2 (entlast))
  710.   (setq ifdimblk (tblsearch "block" "ccjzDIM"))
  711.   (if ifdimblk (command "block" "ccjzDIM" "y" mp ent1 ent2 "")
  712.                (command "block" "ccjzDIM" mp ent1 ent2 "")
  713.   )
  714.   (princ)
  715. )


  716. ;标注部分设置
  717. ;;;(defun csh_ccbz (/ cm)
  718. ;;;  (setq cm (getvar "cmdecho"))
  719. ;;;  ;(setvar "cmdecho" 0)
  720. ;;;  (csh_sty)
  721. ;;;  (dimblk1)
  722. ;;;  (if (= (tblsearch "dimstyle" "TSSD_100_100") nil)
  723. ;;;    (progn (command "dimstyle" "s" "TSSD_100_100")
  724. ;;;    (setvar "DIMDSEP" ".") ;小数分隔符
  725. ;;;    (setvar "DIMADEC" 1)  ;角度小数位数
  726. ;;;    (setvar "DIMALT" 0)  ;选定的换算单位
  727. ;;;    (setvar "DIMALTD" 2)  ;换算单位小数位数
  728. ;;;    (setvar "DIMALTF" 25.4000) ;换算单位比例因子
  729. ;;;    (setvar "DIMALTRND" 0.0000) ;换算单位舍入值
  730. ;;;    (setvar "DIMALTTD" 2) ;换算公差小数位数
  731. ;;;    (setvar "DIMALTTZ" 0) ;换算公差消零
  732. ;;;    (setvar "DIMALTU" 2)  ;换算单位
  733. ;;;    (setvar "DIMALTZ" 0)  ;换算单位消零
  734. ;;;    (setvar "DIMASZ" 80) ;箭头大小
  735. ;;;    (setvar "DIMATFIT" 3) ;箭头和文字调整
  736. ;;;    (setvar "DIMAUNIT" 0) ;角度单位格式
  737. ;;;    (setvar "DIMAZIN" 2)  ;角度消零
  738. ;;;    (setvar "DIMBLK" "ccjzDIM") ;箭头块名
  739. ;;;    (setvar "DIMBLK1" "ccjzDIM") ;第一个箭头块名
  740. ;;;    (setvar "DIMBLK2" "ccjzDIM") ;第二个箭头块名
  741. ;;;    (setvar "DIMCEN" 0.0900) ;圆心标记大小
  742. ;;;    (setvar "DIMCLRD" 3)  ;尺寸线和引线颜色(绿色)
  743. ;;;    (setvar "DIMCLRE" 3)  ;尺寸界线颜色(绿色)
  744. ;;;    (setvar "DIMCLRT" 7)  ;标注文字颜色(绿色)
  745. ;;;    (setvar "DIMDEC" 0)  ;小数位数
  746. ;;;    (setvar "DIMDLE" 0.0000) ;尺寸线
  747. ;;;    (setvar "DIMDLI" 0.0000) ;尺寸线间距
  748. ;;;    (setvar "DIMEXE" 100) ;尺寸界线在尺寸线上
  749. ;;;    (setvar "DIMEXO" 100) ;尺寸界线原点偏移
  750. ;;;    (setvar "DIMFRAC" 0)  ;分数格式
  751. ;;;    (setvar "DIMGAP" 50) ;尺寸线和文字的间距
  752. ;;;    (setvar "DIMJUST" 0)  ;尺寸线上的文字对正
  753. ;;;    (setvar "DIMLDRBLK" ".") ;引线块名
  754. ;;;    (setvar "DIMLFAC" (getvar "DIMLFAC")) ;线性单位比例因子
  755. ;;;    (setvar "DIMLIM" 0)  ;生成标注界限
  756. ;;;    (setvar "DIMLUNIT" 2) ;线性单位格式
  757. ;;;    (setvar "DIMLWD" -2)  ;尺寸线和引线线宽
  758. ;;;    (setvar "DIMLWE" -2)  ;尺寸界线线宽
  759. ;;;    (setvar "DIMRND" 0.0000) ;舍入值
  760. ;;;    (setvar "DIMSAH" 0)  ;独立的箭头块
  761. ;;;    (setvar "DIMSCALE" (getvar "dimscale")) ;全局比例因子
  762. ;;;    (setvar "DIMSD1" 0)  ;隐藏第一条尺寸线
  763. ;;;    (setvar "DIMSD2" 0)  ;隐藏第二条尺寸线
  764. ;;;    (setvar "DIMSE1" 0)  ;隐藏第一条尺寸界线
  765. ;;;    (setvar "DIMSE2" 0)  ;隐藏第二条尺寸界线
  766. ;;;    (setvar "DIMSOXD" 0)  ;隐藏外侧尺寸线
  767. ;;;    (setvar "DIMTAD" 1)         ;文字位于尺寸线上方
  768. ;;;    (setvar "DIMTDEC" 1)  ;公差小数位数
  769. ;;;    (setvar "DIMTFAC" 1.0000) ;公差文字高度比例因子
  770. ;;;    (setvar "DIMTIH" 0)  ;尺寸界线内侧的文字水平放置
  771. ;;;    (setvar "DIMTIX" 1)  ;将文字放置于尺寸界线内侧
  772. ;;;    (setvar "DIMTM" 0.0000) ;下偏差
  773. ;;;    (setvar "DIMTMOVE" 2) ;文字移动
  774. ;;;    (setvar "DIMTOFL" 1)  ;强制在尺寸界线内侧画尺寸线
  775. ;;;    (setvar "DIMTOH" 0)  ;外侧文字水平放置
  776. ;;;    (setvar "DIMTOL" 0)  ;公差标注
  777. ;;;    (setvar "DIMTOLJ" 1)  ;公差垂直对齐
  778. ;;;    (setvar "DIMTP" 0.0000) ;上偏差
  779. ;;;    (setvar "DIMTSZ" 0.0000) ;标记大小
  780. ;;;    (setvar "DIMTVP" 0.0000) ;文字垂直位置
  781. ;;;    (setvar "DIMTXSTY" "TSSD_Rein") ;文字样式
  782. ;;;    (setvar "DIMTXT" 250) ;文字高度
  783. ;;;    (setvar "DIMTZIN" 0)  ;公差消零
  784. ;;;    (setvar "DIMUPT" 0)  ;用户定位的文字
  785. ;;;    (setvar "DIMZIN" 8)  ;消零
  786. ;;;    (princ "\n已新建标注样式TSSD_100_100,该样式符合本院标准,默认全局比例为1,修改比例请输入DIMSCALE。")
  787. ;;;    )
  788. ;;;    (progn
  789. ;;;    ;;;(command "dimstyle" "s" "TSSD_100_100")
  790. ;;;      (setvar "DIMDSEP" ".")  ;小数分隔符
  791. ;;;      (setvar "DIMADEC" 1)  ;角度小数位数
  792. ;;;      (setvar "DIMALT" 0)  ;选定的换算单位
  793. ;;;      (setvar "DIMALTD" 2)  ;换算单位小数位数
  794. ;;;      (setvar "DIMALTF" 25.4000) ;换算单位比例因子
  795. ;;;      (setvar "DIMALTRND" 0.0000) ;换算单位舍入值
  796. ;;;      (setvar "DIMALTTD" 2)  ;换算公差小数位数
  797. ;;;      (setvar "DIMALTTZ" 0)  ;换算公差消零
  798. ;;;      (setvar "DIMALTU" 2)  ;换算单位
  799. ;;;      (setvar "DIMALTZ" 0)  ;换算单位消零
  800. ;;;      (setvar "DIMASZ" 80)  ;箭头大小
  801. ;;;      (setvar "DIMATFIT" 3)  ;箭头和文字调整
  802. ;;;      (setvar "DIMAUNIT" 0)  ;角度单位格式
  803. ;;;      (setvar "DIMAZIN" 2)  ;角度消零
  804. ;;;      (setvar "DIMBLK" "ccjzDIM")  ;箭头块名
  805. ;;;      (setvar "DIMBLK1" "ccjzDIM")  ;第一个箭头块名
  806. ;;;      (setvar "DIMBLK2" "ccjzDIM")  ;第二个箭头块名
  807. ;;;      (setvar "DIMCEN" 0.0900)  ;圆心标记大小
  808. ;;;      (setvar "DIMCLRD" 3)  ;尺寸线和引线颜色(绿色)
  809. ;;;      (setvar "DIMCLRE" 3)  ;尺寸界线颜色(绿色)
  810. ;;;      (setvar "DIMCLRT" 7)  ;标注文字颜色(绿色)
  811. ;;;      (setvar "DIMDEC" 0)  ;小数位数
  812. ;;;      (setvar "DIMDLE" 0.0000)  ;尺寸线
  813. ;;;      (setvar "DIMDLI" 0.0000)  ;尺寸线间距
  814. ;;;      (setvar "DIMEXE" 100)  ;尺寸界线在尺寸线上
  815. ;;;      (setvar "DIMEXO" 100)  ;尺寸界线原点偏移
  816. ;;;      (setvar "DIMFRAC" 0)  ;分数格式
  817. ;;;      (setvar "DIMGAP" 50)  ;尺寸线和文字的间距
  818. ;;;      (setvar "DIMJUST" 0)  ;尺寸线上的文字对正
  819. ;;;      (setvar "DIMLDRBLK" ".")  ;引线块名
  820. ;;;      (setvar "DIMLFAC" (getvar "DIMLFAC"))  ;线性单位比例因子
  821. ;;;      (setvar "DIMLIM" 0)  ;生成标注界限
  822. ;;;      (setvar "DIMLUNIT" 2)  ;线性单位格式
  823. ;;;      (setvar "DIMLWD" -2)  ;尺寸线和引线线宽
  824. ;;;      (setvar "DIMLWE" -2)  ;尺寸界线线宽
  825. ;;;      (setvar "DIMRND" 0.0000)  ;舍入值
  826. ;;;      (setvar "DIMSAH" 0)  ;独立的箭头块
  827. ;;;      (setvar "DIMSCALE" (getvar "dimscale")) ;全局比例因子
  828. ;;;      (setvar "DIMSD1" 0)  ;隐藏第一条尺寸线
  829. ;;;      (setvar "DIMSD2" 0)  ;隐藏第二条尺寸线
  830. ;;;      (setvar "DIMSE1" 0)  ;隐藏第一条尺寸界线
  831. ;;;      (setvar "DIMSE2" 0)  ;隐藏第二条尺寸界线
  832. ;;;      (setvar "DIMSOXD" 0)  ;隐藏外侧尺寸线
  833. ;;;      (setvar "DIMTAD" 1)  ;文字位于尺寸线上方
  834. ;;;      (setvar "DIMTDEC" 1)  ;公差小数位数
  835. ;;;      (setvar "DIMTFAC" 1.0000)  ;公差文字高度比例因子
  836. ;;;      (setvar "DIMTIH" 0)  ;尺寸界线内侧的文字水平放置
  837. ;;;      (setvar "DIMTIX" 1)  ;将文字放置于尺寸界线内侧
  838. ;;;      (setvar "DIMTM" 0.0000)  ;下偏差
  839. ;;;      (setvar "DIMTMOVE" 2)  ;文字移动
  840. ;;;      (setvar "DIMTOFL" 1)  ;强制在尺寸界线内侧画尺寸线
  841. ;;;      (setvar "DIMTOH" 0)  ;外侧文字水平放置
  842. ;;;      (setvar "DIMTOL" 0)  ;公差标注
  843. ;;;      (setvar "DIMTOLJ" 1)  ;公差垂直对齐
  844. ;;;      (setvar "DIMTP" 0.0000)  ;上偏差
  845. ;;;      (setvar "DIMTSZ" 0.0000)  ;标记大小
  846. ;;;      (setvar "DIMTVP" 0.0000)  ;文字垂直位置
  847. ;;;      (setvar "DIMTXSTY" "TSSD_Rein") ;文字样式
  848. ;;;      (setvar "DIMTXT" 250)  ;文字高度
  849. ;;;      (setvar "DIMTZIN" 0)  ;公差消零
  850. ;;;      (setvar "DIMUPT" 0)  ;用户定位的文字
  851. ;;;      (setvar "DIMZIN" 8)  ;消零
  852. ;;;      (princ "\n检测到标注样式:“TSSD_100_100”,为防止样式被改动,程序自动将其还原(全局比例不变)。")
  853. ;;;    )
  854. ;;;  )
  855. ;;;  (command "_.DIMSTYLE" "_SAVE" "TSSD_100_100" "y" "")
  856. ;;;  ;(setvar "cmdecho" cm)
  857. ;;;  (princ)
  858. ;;;  (csh_dimdayang)
  859. ;;;)

  860. (defun csh_ccbz (/ cm)
  861.   (setq cm (getvar "cmdecho"))
  862.   ;(setvar "cmdecho" 0)
  863.   ;(csh_sty)
  864.     (csh_sty)
  865.   (dimblk1)
  866. (if (= (tblsearch "dimstyle" "TSSD_100_100") nil)
  867. ;(entmake (list '(0 ."DIMENSION")
  868. (entmake (list '(0 . "DIMSTYLE")
  869.                '(100 . "AcDbSymbolTableRecord")
  870.                '(100 . "AcDbDimStyleTableRecord")      
  871.                 '(70 . 0)                ;标注类型
  872.                 (cons 2 "tssd_100_100")   ; 标注样式名
  873.                 '(67 .0)     ;模型空间,0
  874.                 '(8 . "DIM") ;图层DIM
  875.                 '(1 . "<>") ; 标注值,默认为测量值
  876.                 '(176 . 7)  ; 尺寸线颜色1-红色,2-黄色,3-绿色,4-青色,5-蓝色,6-洋红,7-白色
  877.                 '(371 . -2) ;尺寸线线宽        
  878.                 '(46 . 0)   ;尺寸线线宽
  879.                 '(43 . 0)   ;基线间距
  880.                 '(281 . 0)  ;隐藏第一条尺寸线
  881.                 '(282 . 0)  ;隐藏第二条尺寸线
  882.                 '(177 . 7)  ;尺寸界线颜色1-红色,2-黄色,3-绿色,4-青色,5-蓝色,6-洋红,7-白色
  883.                 '(372 . -2) ;尺寸界线线宽
  884.                 '(44 . 100) ;超出尺寸线        
  885.                 '(42 . 100) ;起点偏移量
  886.                 '(75 . 0)   ;隐藏第一条尺寸界线
  887.                 '(76 . 0)   ;隐藏第二条尺寸界线?
  888.                
  889. ;;;                 (cons 6  "_ARCHTICK")    ;建筑标记
  890. ;;;                (cons 341  "_ARCHTICK")    ;建筑标记


  891.          
  892.                  (cons 6  "dimblk1")    ;建筑标记
  893.                 (cons 341  "dimblk1")    ;建筑标记
  894.                 '(41 . 80)  ; 箭头大小
  895.                 '(141 .100) ; 圆心标记大小
  896.                  (cons 340 (tblobjname "style" "TSSD_Rein")) ; 文字样式名
  897.                 '(178 . 7)  ;标注文字颜色1-红色,2-黄色,3-绿色,4-青色,5-蓝色,6-洋红,7-白色
  898.                 '(140 . 250) ; 标注文字高度        
  899.                 '(77 . 1)  ; 文字在尺寸线上方
  900.                 '(280 . 0)  ;标注文字 位置水平置中
  901.                 '(147 . 50)   ; 文字从尺寸线偏移
  902.                 '(73 . 0)     ;尺寸界线内侧的文字水平放置
  903.                 '(74 . 0)     ;外侧文字水平放置
  904.                 '(277 . 2)    ;线性单位格式,小数
  905.                 '(271 . 1)    ; 线性标注精度
  906.                 '(144 . 1)    ; 测量单位比例因子
  907.                 '(78 . 8)     ; 测量单位比例,消零
  908.                 '(275 . 0)    ; 角度标注单位格式,十进制     
  909.                 '(179 . 0)    ;角度标注精度,整数
  910.                 '(79 . 0)     ;角度标注,消零                  
  911.                 '(40 . 0.0)   ;全局比例因子
  912.                 '(279 . 21)   ;文字移动
  913.                 '(173 . 0)    ;独立的箭头块               
  914.                 '(172 . 2)    ; 尺寸界线间连线              
  915.                 '(271 . 1)    ; 尺寸标注精度
  916.                 '(288 . 1)    ; 手动放置尺寸               
  917.   );list
  918.   );entmake
  919. );if
  920.   (command "_.DIMSTYLE" "_SAVE" "TSSD_100_100" "y" "")
  921.   ;(setvar "cmdecho" cm)
  922.   (princ)
  923.   (csh_dimdayang)
  924.   );defun

  925.   
  926. ;建立各种比例大样图所需的标注样式
  927. (defun csh_dimdayang(/ ACADDOCUMENT ACADOBJECT CURRDIMSTYLE MSPACE)
  928.   (PRINC "\n模型空间中,建立各种比例大样图所需的标注样式 :")
  929. ;;; 首先,返回当前的标注的样式
  930. ;;; 接着,设定新的样式。
  931. ;;; 最后,将样式恢复为原来的设定值。
  932.   (VL-LOAD-COM)
  933.   (setq AcadObject(vlax-get-acad-object)
  934.         AcadDocument(vla-get-ActiveDocument AcadObject)
  935.         mSpace(vla-get-ModelSpace AcadDocument)
  936.   )
  937. ;;; 返回激活文件当前的标注样式
  938. (setq currDimStyle(vla-get-ActiveDimStyle AcadDocument))
  939. ;(princ "当前的标注型式是 ")(princ (vla-get-name currDimStyle))
  940. ;;; 建立标注样式 TSSD_10_100
  941.   (setvar "dimlfac" 0.1);因为图元放大了10倍
  942.   (setvar "DIMCLRD" 1);改变颜色以区分
  943.   (setvar "dimclre" 1)
  944.   (if (not (tblsearch "dimstyle" "TSSD_10_100"))
  945.       (command "-dimstyle" "s" "TSSD_10_100")
  946.       (command "-dimstyle" "s" "TSSD_10_100" "y")
  947.   )
  948.   ;;; 建立标注样式 TSSD_20_100
  949.   (setvar "dimlfac" 0.20)
  950.   (setvar "DIMCLRD" 2)
  951.     (setvar "dimclre" 2)
  952.   (if (not (tblsearch "dimstyle" "TSSD_20_100"))
  953.       (command "-dimstyle" "s" "TSSD_20_100")
  954.       (command "-dimstyle" "s" "TSSD_20_100" "y")
  955.   )
  956.   ;;; 建立标注样式 TSSD_25_100
  957.   (setvar "dimlfac" 0.25)
  958.   (setvar "DIMCLRD" 4)
  959.     (setvar "dimclre" 4)
  960.   (if (not (tblsearch "dimstyle" "TSSD_25_100"))
  961.       (command "-dimstyle" "s" "TSSD_25_100")
  962.       (command "-dimstyle" "s" "TSSD_25_100" "y")
  963.   )
  964.     ;;; 建立标注样式 TSSD_50_100
  965.   (setvar "dimlfac" 0.5)
  966.   (setvar "DIMCLRD" 6)
  967.     (setvar "dimclre" 6)
  968.   (if (not (tblsearch "dimstyle" "TSSD_50_100"))
  969.       (command "-dimstyle" "s" "TSSD_50_100")
  970.       (command "-dimstyle" "s" "TSSD_50_100" "y")
  971.   )
  972.   (vla-put-ActiveDimStyle AcadDocument currDimStyle);; 将标注样式设回原来的标注样式
  973.   ;(princ "标注型式重设为 ")(princ (vla-get-name currDimStyle))
  974.   (princ)
  975. )

  976.     (setvar "blipmode" orig_blip); 还原系统变数的设定值
  977.     (setvar "cmdecho" orig_cmd)
  978.     (setvar "osmode" orig_osnap)
  979.     (setvar "clayer" orig_layer)

  980. ;    (command "osmode" "191"); 打开端点,中点,中心,象限点,交点及垂点捕捉
  981. ;    (command "units" "2" "2" "" "" "" "")
  982. ;    (command "chamfera" "0"); 将chamfer命令的第一点D值设为0
  983. ;    (command "chamferb" "0"); 将chamfer命令的第二点D值设为0
  984. ;    (command "filletrad" "0"); 将fillet命令的半径R值设为0
  985. (csh_lay)
  986. (csh_sty)
  987. (csh_bzgc)
  988. (csh_ccbz)
  989. (princ "\n***  绘图环境初始化完成  **** 命令: csh ***")
  990.     (princ)
  991. ); csh.lsp命令结束   
  992.     (princ)


  993. (defun c:d10 ()(command "-DIMSTYLE" "R" "TSSD_10_100")(princ "\n当前标注样式:TSSD_10_100")(princ))
  994. (defun c:d20 ()(command "-DIMSTYLE" "R" "TSSD_20_100")(princ "\n当前标注样式:TSSD_20_100")(princ))
  995. (defun c:d25 ()(command "-DIMSTYLE" "R" "TSSD_25_100")(princ "\n当前标注样式:TSSD_25_100")(princ))
  996. (defun c:d50 ()(command "-DIMSTYLE" "R" "TSSD_50_100")(princ "\n当前标注样式:TSSD_50_100")(princ))
  997. (defun c:d100 ()(command "-DIMSTYLE" "R" "TSSD_100_100")(princ "\n当前标注样式:TSSD_100_100")(princ))
发表于 2014-8-14 14:57 | 显示全部楼层
本帖最后由 1993063 于 2014-8-13 21:32 编辑

看起来好像很利害的样子.代码这么长,
发表于 2014-8-14 15:24 | 显示全部楼层
好厉害,看不懂
发表于 2014-8-14 15:31 | 显示全部楼层
一个简单的创建标注样例:
(Defun C:BZ (/ *error* vl ov dm_scl dm_Name)
  (defun *error* (x) (and ov (Mapcar 'Setvar vl ov)))
  (setq vl '("CMDECHO" "EXPERT") ov (Mapcar 'Getvar vl))
  (Mapcar 'Setvar vl '(0 5))
  (setq dm_scl (getint "\r →输入全局比例因子: "))
  (setq dm_Name (strcat "标注-" (itoa dm_scl) ""))
  (setvar "DIMSCALE" dm_scl)
  (vl-cmdf "_dimstyle" "_save" dm_Name)
  (Mapcar 'Setvar vl ov)
  (princ)
) 参照修改!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-18 23:59 , Processed in 0.271047 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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