找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 694|回复: 0

[求助] 标注样式程序求完善

[复制链接]
发表于 2015-5-19 19:40:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
1、怎么让他的文字和箭头效果最佳,也就是调整里面的第一项
2、怎么让他支持放大倍数支持到0.5,1.5,2.5,3.5……这样的倍数
如果解决以上两个问题,由衷感谢。


(defun make_textstyle( stylename )
;stylename 字体样式名称
;(setq stylename "STD")
(if (null (tblobjname "STYLE" stylename) )
(entmake (list '(0 . "STYLE")
        '(100 . "AcDbSymbolTableRecord")
        '(100 . "AcDbTextStyleTableRecord")
        '(70 . 0)
                '(42 . 300) ;默认字高
                '(3 . "gbenor.shx")
                '(4 . "gbcbig.shx")
        (cons 2 stylename)
                '(40 . 0.0) ;字高
                '(41 . 0.7) ;字宽比例
                '(50 . 0.0) ;默认旋转角度
        )
                )
);if
)


(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
      ;(setup_STD)

    (setvar "DIMDSEP" ".") ;小数分隔符
    (setvar "DIMADEC" 1)  ;角度小数位数
    (setvar "DIMALT" 0)  ;选定的换算单位
    (setvar "DIMALTD" 1)  ;换算单位小数位数
    (setvar "DIMALTF" 25.400) ;换算单位比例因子
    (setvar "DIMALTRND" 0.000) ;换算单位舍入值
    (setvar "DIMALTTD" 3) ;换算公差小数位数
    (setvar "DIMALTTZ" 0) ;换算公差消零
    (setvar "DIMALTU" 2)  ;换算单位
    (setvar "DIMALTZ" 1)  ;换算单位消零
    (setvar "DIMASZ" 2.5) ;箭头大小
    (setvar "DIMATFIT" 0) ;箭头和文字调整

    (setvar "DIMAUNIT" 0) ;角度单位格式
    (setvar "DIMAZIN" 2)  ;角度消零
    (setvar "DIMBLK" ".") ;箭头块名
    (setvar "DIMBLK1" ".") ;第一个箭头块名
    (setvar "DIMBLK2" ".") ;第二个箭头块名
    (setvar "DIMCEN" 0.090) ;圆心标记大小
    (setvar "DIMCLRD" 0)  ;尺寸线和引线颜色
    (setvar "DIMCLRE" 0)  ;尺寸界线颜色
    (setvar "DIMCLRT" 0)  ;标注文字颜色
    (setvar "DIMDEC" 1)  ;小数位数
    (setvar "DIMDLE" 0.000) ;尺寸线
    (setvar "DIMDLI" 0.000) ;尺寸线间距
    (setvar "DIMEXE" 1.250) ;尺寸界线在尺寸线上
    (setvar "DIMEXO" 1.000) ;尺寸界线原点偏移
    (setvar "DIMFRAC" 0)  ;分数格式
    (setvar "DIMGAP" 1) ;尺寸线和文字的间距
    (setvar "DIMJUST" 1)  ;尺寸线上的文字对正
    (setvar "DIMLDRBLK" ".") ;引线块名
    (setvar "DIMLFAC" measure-sc) ;测量单位比例因子
    (setvar "DIMLIM" 0)  ;生成标注界限
    (setvar "DIMLUNIT" 2) ;线性单位格式
    (setvar "DIMLWD" -2)  ;尺寸线和引线线宽
    (setvar "DIMLWE" -2)  ;尺寸界线线宽
    (setvar "DIMRND" 0.000) ;舍入值
    (setvar "DIMSAH" 1)  ;独立的箭头块
    (setvar "DIMSCALE" global-sc) ;全局比例因子
    (setvar "DIMSD1" 0)  ;隐藏第一条尺寸线
    (setvar "DIMSD2" 0)  ;隐藏第二条尺寸线
    (setvar "DIMSE1" 0)  ;隐藏第一条尺寸界线
    (setvar "DIMSE2" 0)  ;隐藏第二条尺寸界线
    (setvar "DIMSOXD" 0)  ;隐藏外侧尺寸线
    (setvar "DIMTAD" 1)   ;文字位于尺寸线上方
    (setvar "DIMTDEC" 2)  ;公差小数位数
    (setvar "DIMTFAC" 0.7) ;公差文字高度比例因子
    (setvar "DIMTIH" 0)  ;尺寸界线内侧的文字水平放置
    (setvar "DIMTIX" 1)  ;将文字放置于尺寸界线内侧
    (setvar "DIMTM" 0.000) ;下偏差
    (setvar "DIMTMOVE" 0) ;文字移动
    (setvar "DIMTOFL" 1)  ;强制在尺寸界线内侧画尺寸线
    (setvar "DIMTOH" 0)  ;外侧文字水平放置
    (setvar "DIMTOL" 0)  ;公差标注
    (setvar "DIMTOLJ" 1)  ;公差垂直对齐
    (setvar "DIMTP" 0.000) ;上偏差
    (setvar "DIMTSZ" 0.000) ;标记大小
    (setvar "DIMTVP" 0.000) ;文字垂直位置
    (setvar "DIMTXSTY" text-style) ;文字样式
    (setvar "DIMTXT" 3.5) ;文字高度
    (setvar "DIMTZIN" 0)  ;公差消零
    (setvar "DIMUPT" 0)  ;用户定位的文字
    (setvar "DIMZIN" 8)  ;消零
    (setvar "DIMTAD" 1)  ;标注文字在尺寸线上方
    (setvar "DIMJUST" 0)  ;标注文字在尺寸线上方
    (command "dimstyle" "s" dimname)
    (princ (strcat "\n当前标准样式为" dimname))
    );progn
        (progn
        (command "dimstyle" "r" dimname)
        (princ (strcat "\n当前标准样式为" dimname))
        )
);if
  );defun


;全局变量 hnu:scale
(if (null hnu:dimscale)
(setq hnu:dimscale 1)
);if
(if (null hnu:dimlfac)
(setq hnu:dimlfac 1)
);if

(make_textstyle  "STD")

(if (/= hnu:dimlfac 1)
(setq dimname (strcat "STD_" (itoa hnu:dimscale) "(x" (itoa hnu:dimlfac) ")" ));设置大样标注样式名称
(setq dimname (strcat "STD_" (itoa hnu:dimscale)));设置一般图标注样式名称
);修正标注样式名称
(make_dimstyle dimname hnu:dimscale (/ 1.0 hnu:dimlfac) "STD" ) ;1.0很重要。两者都是整数,则结果取整了。
;(make_dimstyle "STD_100" 100 1  "STD")
(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 "STD_" (itoa hnu:dimscale) "(x" (itoa hnu:dimlfac) ")" ));设置大样标注样式名称
(setq dimname (strcat "STD_" (itoa hnu:dimscale)));设置一般图标注样式名称
);修正标注样式名称

(setq text-style "STD")
(make_textstyle text-style)
(make_dimstyle dimname hnu:dimscale (/ 1.0 hnu:dimlfac) text-style) ;1.0很重要。两者都是整数,则结果取整了。
;更改比例,同时设置标注样式。

(princ)
)

(defun C:STD()
(C:scalesetup)
)

(defun C:dea( / pt1 pt2 self-ang a d  pt3)
;DE Advanced标注标准化命令
;Designed by 程浩
;支持循环

(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))

;(setq oldosmode (getvar "osmode"))
;(setvar "osmode" 0)
(command "DIMALIGNED" "non" pt1 "non" pt2 "non" pt3)
; (setvar "osmode" oldosmode)
(while (setq         pt1 pt2
                                pt2 (getpoint "\n下一点<exit>"))
(command "DIMALIGNED" "non" pt1 "non" pt2 "non" pt3)
);while 支持连续标注
(princ)

)
(princ "\nDEA DEAdvanced标注命令加载成功 \nDesigned by 程浩 2014年2月20日")
(princ "\n顺时针标注在上,逆时针标注在下,scalesetup设置比例,快捷键STD,默认比例1:100")
(princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-10 17:40 , Processed in 0.329244 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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