明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 13304|回复: 42

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

    [复制链接]
发表于 2014-2-20 20:50 | 显示全部楼层 |阅读模式
本帖最后由 林霄云 于 2014-5-7 22:04 编辑

标准化标注源码解析与测试——支持UCS,智能标注样式
自写完箍筋拉筋符号后——拉筋箍筋符号源码解析与测试(支持UCS、形式切换、智能比例、统一命令)
http://bbs.mjtd.com/forum.php?mo ... 193&fromuid=7303580内心无比空虚,我在结构专业标准化制图中越走越深,对于标注的标准化,我有了点想法。标注样式智能化,当然很多实现的思路,我想我的思路或许值得探讨。

调用函数DEA
  1. (defun C:dea()
  2. ;DE Advanced标注标准化命令
  3. ;Designed by 林霄云
  4. ;需要支持循环
  5. (while (setq pt1 (getpoint "\n第一点<exit>"))
  6. (setq pt2 (getpoint pt1  "\n第二点"))
  7. (setq self-ang (angle pt1 pt2))

  8. (setq a (* pi 0.5))

  9. (if (or (< (car pt1) (car pt2))
  10.     (and (= (car pt1) (car pt2))(< (cadr pt1) (cadr pt2)))
  11.     )
  12. (setq d (* 6 hnu:dimscale ))
  13. );if

  14. (if (or (> (car pt1) (car pt2))
  15.     (and (= (car pt1) (car pt2))(> (cadr pt1) (cadr pt2)))
  16.     )
  17. (setq d (* 8 hnu:dimscale ))
  18.    
  19.     );if      
  20.    
  21. (setq pt3 (polar pt2 (+ self-ang a) d))

  22. (command "DIMALIGNED" pt1 pt2 pt3)
  23. (princ)
  24. );while
  25. )
  26. (princ "\nDEA DEAdvanced标注命令加载成功 \nDesigned by 林霄云 2014年2月20日")
  27. (princ "\n顺时针标注在上,逆时针标注在下,scalesetup设置比例,快捷键scset,默认比例1:100")
  28. (princ)
主函数调用了一全局比例作为参数,因此,需要一个接口设置此全局比例。并且,对每次调用比例设置时,自动更改当前的标柱样式以匹配。
  1. (defun C:scalesetup ( / dimname temp-s temp-fac)
  2. ;返回值:标注比例设置,同时修改(无则生成)当前标注样式。
  3. ;Designed by 林霄云 2014年2月20日

  4. (princ "比例设置,为1:150时,输入150;1:100时,输入100")
  5. (princ (strcat "\n当前比例 " (itoa hnu:dimscale)))
  6. (initget 6)
  7. (setq  temp-s (getint (strcat "\n新比例<" (itoa hnu:dimscale) ">")))

  8. (initget 6)
  9. (setq temp-fac (getint "\n当前比例下,输入标注值为测量值的倍数<1>"))
  10. (if temp-fac
  11. (setq hnu:dimlfac temp-fac)
  12. (setq hnu:dimlfac 1)
  13. );if 输入处理
  14. (if  temp-s  ;处理默认,nil则不进行设置,是不行的。
  15. (progn
  16. (setq hnu:dimscale temp-s)
  17. (princ (strcat "\n当前比例设置为1:" (itoa hnu:dimscale)))  
  18. )
  19. );if 输入处理

  20. (if (/= hnu:dimlfac 1)
  21. (setq dimname (strcat "G_DS_" (itoa hnu:dimscale) "(x" (itoa hnu:dimlfac) ")" ));设置大样标注样式名称
  22. (setq dimname (strcat "G_DS_" (itoa hnu:dimscale)));设置一般图标注样式名称
  23. );修正标注样式名称

  24. (setq text-style "G_text");大家得修改这个,不提供接口,本人有函数生成。make_textstyle
  25. (make_dimstyle dimname hnu:dimscale (/ 1.0 hnu:dimlfac) text-style) ;1.0很重要。两者都是整数,则结果取整了。
  26. ;更改比例,同时设置标注样式。

  27. (princ)
  28. )
必须得注意到,全局比例和测量比例因子很重要。其皆作为标注样式名称的一部分,作为生成标注样式的参数。由为重要的是,作为全局变量保存。
自然需要生成标注样式代码make_dimstyle
  1. (defun make_dimstyle (dimname global-sc measure-sc text-style)
  2. ;返回值:生成标注样式,置为当前标注样式。
  3. ;Designed by 林霄云 2014年2月20日
  4. ;dimname 标注样式名称 global-sc全局比例因子 measure-sc测量比例因子 text-style标注文字样式
  5. (if (= (tblsearch "dimstyle" dimname) nil)
  6. (progn
  7. (……);一系列的变量设置
  8.     (command "dimstyle" "s" dimname)
  9.     (princ (strcat "\n当前标准样式为" dimname))
  10.     );progn
  11.   (progn
  12.   (command "dimstyle" "r" dimname)
  13.   (princ (strcat "\n当前标准样式为" dimname))
  14.   )
  15. );if
  16.   );defun
结果:智能的设置标注样式,结合智能设置图层,像标准化更进一步。另详附图



本帖子中包含更多资源

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

x

评分

参与人数 6明经币 +7 收起 理由
bzhjl + 1 赞一个!
669423907 + 1 很给力!
langjs + 2 赞一个!不错的说
flyfox1047 + 1 赞一个!
liuhaixin88 + 1 赞一个!要改称林大哥为林大侠了!
zctao1966 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

  • · 收集|主题: 58, 订阅: 4
发表于 2019-9-10 12:46 | 显示全部楼层
还不错,希望楼主多研发些好用的插件
 楼主| 发表于 2014-2-21 18:38 | 显示全部楼层
补充一下,使用command line时,需要取消捕捉,修改代码如下
原代码
  1. (command "DIMALIGNED" pt1 pt2 pt3)
修改为
  1. (setq oldosmode (getvar "osmode"))
  2. (setvar "osmode" 0)
  3. (command "DIMALIGNED" pt1 pt2 pt3)
  4. (setvar "osmode" oldosmode)
及时设置,这样是可以避免捕捉丢失。
发表于 2014-2-21 18:55 | 显示全部楼层
可惜没币了,下载不了

评分

参与人数 2明经币 +2 收起 理由
flyfox1047 + 1 别哭,面包会有的!
林霄云 + 1 淡定

查看全部评分

发表于 2014-2-21 20:05 | 显示全部楼层
版主可否送我一个币呀!!

评分

参与人数 1明经币 +1 收起 理由
林霄云 + 1 我非常希望你下载学习。那是我的大幸

查看全部评分

发表于 2014-2-21 20:33 | 显示全部楼层
dear sir,

add dialog box for scale its convenient  
 楼主| 发表于 2014-2-22 13:56 | 显示全部楼层
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!

点评

假老外,懂中文的...  发表于 2014-2-22 14:56
发表于 2014-2-23 15:07 | 显示全部楼层
林大师,乐于助人,赞一个!能帮我解决这个问题吗?http://bbs.mjtd.com/thread-109252-1-1.html

点评

实在是没时间咯。推荐你向院长学习一下。【e派】工具箱函数再揭秘及应用实例 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=95673&fromuid=7303580  发表于 2014-2-24 18:24
发表于 2014-2-25 09:45 | 显示全部楼层
很不错!!!!
发表于 2014-2-25 10:03 | 显示全部楼层
有错误,用不了
 楼主| 发表于 2014-2-25 10:57 | 显示全部楼层
myjping 发表于 2014-2-25 10:03
有错误,用不了

不会有错误的。有段代码还是贴出来吧!自行修改。必须确保文字样式的存在,否则标注样式不能生成。(至于补充在哪里,我就不多说了)
  1. (defun make_textstyle( stylename )
  2. ;stylename 字体样式名称
  3. ;(setq stylename "G_hy_text")
  4. (if (null (tblobjname "STYLE" stylename) )
  5. (entmake (list '(0 . "STYLE")
  6.         '(100 . "AcDbSymbolTableRecord")
  7.         '(100 . "AcDbTextStyleTableRecord")
  8.         '(70 . 0)
  9.                 '(42 . 300) ;默认字高
  10.                 '(3 . "hysz.shx") ;此处自行修改
  11.                 '(4 . "hyfs.shx") ;此处自行修改
  12.         (cons 2 stylename)
  13.                 '(40 . 0.0) ;字高
  14.                 '(41 . 0.7) ;字宽比例
  15.                 '(50 . 0.0) ;默认旋转角度
  16.         )
  17.                 )
  18. );if
  19. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 19:52 , Processed in 0.188174 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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