本帖最后由 林霄云 于 2014-5-7 22:04 编辑
标准化标注源码解析与测试——支持UCS,智能标注样式
自写完箍筋拉筋符号后——拉筋箍筋符号源码解析与测试(支持UCS、形式切换、智能比例、统一命令)
http://bbs.mjtd.com/forum.php?mo ... 193&fromuid=7303580内心无比空虚,我在结构专业标准化制图中越走越深,对于标注的标准化,我有了点想法。标注样式智能化,当然很多实现的思路,我想我的思路或许值得探讨。
调用函数DEA- (defun C:dea()
- ;DE Advanced标注标准化命令
- ;Designed by 林霄云
- ;需要支持循环
- (while (setq pt1 (getpoint "\n第一点<exit>"))
- (setq pt2 (getpoint pt1 "\n第二点"))
- (setq self-ang (angle pt1 pt2))
- (setq a (* pi 0.5))
- (if (or (< (car pt1) (car pt2))
- (and (= (car pt1) (car pt2))(< (cadr pt1) (cadr pt2)))
- )
- (setq d (* 6 hnu:dimscale ))
- );if
- (if (or (> (car pt1) (car pt2))
- (and (= (car pt1) (car pt2))(> (cadr pt1) (cadr pt2)))
- )
- (setq d (* 8 hnu:dimscale ))
-
- );if
-
- (setq pt3 (polar pt2 (+ self-ang a) d))
- (command "DIMALIGNED" pt1 pt2 pt3)
- (princ)
- );while
- )
- (princ "\nDEA DEAdvanced标注命令加载成功 \nDesigned by 林霄云 2014年2月20日")
- (princ "\n顺时针标注在上,逆时针标注在下,scalesetup设置比例,快捷键scset,默认比例1:100")
- (princ)
主函数调用了一全局比例作为参数,因此,需要一个接口设置此全局比例。并且,对每次调用比例设置时,自动更改当前的标柱样式以匹配。- (defun C:scalesetup ( / dimname temp-s temp-fac)
- ;返回值:标注比例设置,同时修改(无则生成)当前标注样式。
- ;Designed by 林霄云 2014年2月20日
- (princ "比例设置,为1:150时,输入150;1:100时,输入100")
- (princ (strcat "\n当前比例 " (itoa hnu:dimscale)))
- (initget 6)
- (setq temp-s (getint (strcat "\n新比例<" (itoa hnu:dimscale) ">")))
- (initget 6)
- (setq temp-fac (getint "\n当前比例下,输入标注值为测量值的倍数<1>"))
- (if temp-fac
- (setq hnu:dimlfac temp-fac)
- (setq hnu:dimlfac 1)
- );if 输入处理
- (if temp-s ;处理默认,nil则不进行设置,是不行的。
- (progn
- (setq hnu:dimscale temp-s)
- (princ (strcat "\n当前比例设置为1:" (itoa hnu:dimscale)))
- )
- );if 输入处理
- (if (/= hnu:dimlfac 1)
- (setq dimname (strcat "G_DS_" (itoa hnu:dimscale) "(x" (itoa hnu:dimlfac) ")" ));设置大样标注样式名称
- (setq dimname (strcat "G_DS_" (itoa hnu:dimscale)));设置一般图标注样式名称
- );修正标注样式名称
- (setq text-style "G_text");大家得修改这个,不提供接口,本人有函数生成。make_textstyle
- (make_dimstyle dimname hnu:dimscale (/ 1.0 hnu:dimlfac) text-style) ;1.0很重要。两者都是整数,则结果取整了。
- ;更改比例,同时设置标注样式。
- (princ)
- )
必须得注意到,全局比例和测量比例因子很重要。其皆作为标注样式名称的一部分,作为生成标注样式的参数。由为重要的是,作为全局变量保存。
自然需要生成标注样式代码make_dimstyle- (defun make_dimstyle (dimname global-sc measure-sc text-style)
- ;返回值:生成标注样式,置为当前标注样式。
- ;Designed by 林霄云 2014年2月20日
- ;dimname 标注样式名称 global-sc全局比例因子 measure-sc测量比例因子 text-style标注文字样式
- (if (= (tblsearch "dimstyle" dimname) nil)
- (progn
- (……);一系列的变量设置
- (command "dimstyle" "s" dimname)
- (princ (strcat "\n当前标准样式为" dimname))
- );progn
- (progn
- (command "dimstyle" "r" dimname)
- (princ (strcat "\n当前标准样式为" dimname))
- )
- );if
- );defun
结果:智能的设置标注样式,结合智能设置图层,像标准化更进一步。另详附图
|