林霄云 发表于 2014-2-20 20:50:50

标准化标注源码解析与测试(支持UCS,智能标注样式)

本帖最后由 林霄云 于 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)
(setqtemp-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 输入处理
(iftemp-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结果:智能的设置标注样式,结合智能设置图层,像标准化更进一步。另详附图



水仙的错 发表于 2019-9-10 12:46:03

还不错,希望楼主多研发些好用的插件

林霄云 发表于 2014-2-21 18:38:06

补充一下,使用command line时,需要取消捕捉,修改代码如下
原代码(command "DIMALIGNED" pt1 pt2 pt3)修改为(setq oldosmode (getvar "osmode"))
(setvar "osmode" 0)
(command "DIMALIGNED" pt1 pt2 pt3)
(setvar "osmode" oldosmode)及时设置,这样是可以避免捕捉丢失。

liuhaixin88 发表于 2014-2-21 18:55:12

可惜没币了,下载不了

xieyanghui 发表于 2014-2-21 20:05:20

版主可否送我一个币呀!!

sachindkini 发表于 2014-2-21 20:33:36

dear sir,

add dialog box for scale its convenient

林霄云 发表于 2014-2-22 13:56:36

sachindkini 发表于 2014-2-21 20:33 static/image/common/back.gif
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 bygifted guyswho ,I guess ,are paid more!

lucas_3333 发表于 2014-2-23 15:07:08

林大师,乐于助人,赞一个!能帮我解决这个问题吗?http://bbs.mjtd.com/thread-109252-1-1.html

freehand8008 发表于 2014-2-25 09:45:02

很不错!!!!

myjping 发表于 2014-2-25 10:03:33

有错误,用不了

林霄云 发表于 2014-2-25 10:57:54

myjping 发表于 2014-2-25 10:03 static/image/common/back.gif
有错误,用不了

不会有错误的。有段代码还是贴出来吧!自行修改。必须确保文字样式的存在,否则标注样式不能生成。(至于补充在哪里,我就不多说了)(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
)
页: [1] 2 3 4 5
查看完整版本: 标准化标注源码解析与测试(支持UCS,智能标注样式)