本帖最后由 林霄云 于 2014-5-7 22:04 编辑
标准化标注源码解析与测试——支持UCS,智能标注样式
自写完箍筋拉筋符号后——拉筋箍筋符号源码解析与测试(支持UCS、形式切换、智能比例、统一命令)
http://bbs.mjtd.com/forum.php?mo ... 193&fromuid=7303580内心无比空虚,我在结构专业标准化制图中越走越深,对于标注的标准化,我有了点想法。标注样式智能化,当然很多实现的思路,我想我的思路或许值得探讨。
调用函数DEA
主函数调用了一全局比例作为参数,因此,需要一个接口设置此全局比例。并且,对每次调用比例设置时,自动更改当前的标柱样式以匹配。
必须得注意到,全局比例和测量比例因子很重要。其皆作为标注样式名称的一部分,作为生成标注样式的参数。由为重要的是,作为全局变量保存。
自然需要生成标注样式代码make_dimstyle
结果:智能的设置标注样式,结合智能设置图层,像标准化更进一步。另详附图
网友答: 楼主,可否设置成全局比例为带小数的?网友答: 还不错,希望楼主多研发些好用的插件网友答: 补充一下,使用command line时,需要取消捕捉,修改代码如下
原代码
修改为
及时设置,这样是可以避免捕捉丢失。网友答:
可惜没币了,下载不了
网友答:
版主可否送我一个币呀!!网友答:
dear sir,
add dialog box for scale its convenient 网友答:
Thanks for your interest.and I am sorry I can't agree with you.reasons as follows,I do like the version posted .it is simple,left-hand hotkey operations,no mouse location,less harm to eyes .and most of all,it can be downloaded and modified by gifted guys who ,I guess ,are paid more!网友答: 林大师,乐于助人,赞一个!能帮我解决这个问题吗?http://bbs.mjtd.com/thread-109252-1-1.html网友答: 很不错!!!!网友答: 有错误,用不了网友答:
不会有错误的。有段代码还是贴出来吧!自行修改。必须确保文字样式的存在,否则标注样式不能生成。(至于补充在哪里,我就不多说了)
标准化标注源码解析与测试——支持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
网友答: 楼主,可否设置成全局比例为带小数的?网友答: 还不错,希望楼主多研发些好用的插件网友答: 补充一下,使用command line时,需要取消捕捉,修改代码如下
原代码

- (command "DIMALIGNED" pt1 pt2 pt3)

- (setq oldosmode (getvar "osmode"))
- (setvar "osmode" 0)
- (command "DIMALIGNED" pt1 pt2 pt3)
- (setvar "osmode" oldosmode)
网友答:
版主可否送我一个币呀!!网友答:
dear sir,add dialog box for scale its convenient 网友答:
sachindkini 发表于 2014-2-21 20:33
dear sir,
add dialog box for scale its convenient
Thanks for your interest.and I am sorry I can't agree with you.reasons as follows,I do like the version posted .it is simple,left-hand hotkey operations,no mouse location,less harm to eyes .and most of all,it can be downloaded and modified by gifted guys who ,I guess ,are paid more!网友答: 林大师,乐于助人,赞一个!能帮我解决这个问题吗?http://bbs.mjtd.com/thread-109252-1-1.html网友答: 很不错!!!!网友答: 有错误,用不了网友答:
myjping 发表于 2014-2-25 10:03
有错误,用不了
不会有错误的。有段代码还是贴出来吧!自行修改。必须确保文字样式的存在,否则标注样式不能生成。(至于补充在哪里,我就不多说了)

- (defun make_textstyle( stylename )
- ;stylename 字体样式名称
- ;(setq stylename "G_hy_text")
- (if (null (tblobjname "STYLE" stylename) )
- (entmake (list '(0 . "STYLE")
- '(100 . "AcDbSymbolTableRecord")
- '(100 . "AcDbTextStyleTableRecord")
- '(70 . 0)
- '(42 . 300) ;默认字高
- '(3 . "hysz.shx") ;此处自行修改
- '(4 . "hyfs.shx") ;此处自行修改
- (cons 2 stylename)
- '(40 . 0.0) ;字高
- '(41 . 0.7) ;字宽比例
- '(50 . 0.0) ;默认旋转角度
- )
- )
- );if
- )