找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: lucas3

[已解决] 像这样改变当前标注文字高度

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-24 10:56:39 来自手机 | 显示全部楼层
lucas3 发表于 2014-11-24 10:26
ST大师既然发现了就帮忙改改吧,另外提到的这两点
3. 全局比例的小数位只保留一位能行么?


1 (distof (rtos scl 2 1))
2 (fix (+ height 0.5))不要小于0.5的高度
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-11-24 11:27:56 | 显示全部楼层
st788796 发表于 2014-11-24 10:56
1 (distof (rtos scl 2 1))
2 (fix (+ height 0.5))不要小于0.5的高度

ST大师,这两句分别放入到哪儿呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-11-24 14:00:13 | 显示全部楼层

大师,谢谢!
选择图框报错的问题还没有解决吧
别外加载此代码就报错:命令: ; 错误: 语法错误
错误: SETQ 中变量名称错误: (DISTOF (RTOS SCL 2 1))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-24 14:53:50 来自手机 | 显示全部楼层
lucas3 发表于 2014-11-24 14:00
大师,谢谢!
选择图框报错的问题还没有解决吧
别外加载此代码就报错:命令: ; 错误: 语法错误

那就用 (setq scl (cons …
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-27 10:46:44 | 显示全部楼层
lucas3 发表于 2014-11-24 10:26
ST大师既然发现了就帮忙改改吧,另外提到的这两点
3. 全局比例的小数位只保留一位能行么?

这样试试
  1. (defun c:tt (/                _string:decimal              _changescale
  2.              _rectang:scale           scl              height         str
  3.              ds                nscl           kw              bp         up
  4.              blk
  5.             )
  6.   (defun _string:decimal (val / str)
  7.     (setvar "dimzin" 0)
  8.     (setq str (rtos val 2 2)
  9.           str (vl-string-right-trim "0" str)
  10.           str (vl-string-right-trim "." str)
  11.     )
  12.   )
  13.   (defun _changescale (h str)
  14.     (vlax-for obj (fy:cset)
  15.       (if (wcmatch (vla-get-objectname obj) "*Text")
  16.         (vlax-put obj 'height h)
  17.         (vlax-put obj 'stylename str)
  18.       )
  19.     )
  20.   )
  21.   (defun _rectang:scale        (/ p1 p2 str lst v scl kw)
  22.     (if
  23.       (and
  24.         (setq p1 (getpoint "\n第一点: "))
  25.         (setq p2 (getcorner p1 "\n对角点: "))
  26.         (progn (initget "0 1 2 3 4")
  27.                (setq kw        (getkword
  28.                           "\n打印图框大小[A0(0)/A1(1)/A2(2)/A3(3)/A4(4)]: "
  29.                         )
  30.                )
  31.         )
  32.         (setq lst (assoc kw
  33.                          '(("0" 1089 841)
  34.                            ("1" 841 594)
  35.                            ("2" 594 420)
  36.                            ("3" 420 297)
  37.                            ("4" 297 210)
  38.                           )
  39.                   )
  40.         )
  41.       )
  42.        (progn (setq v        (apply 'max (mapcar 'abs (mapcar '- p2 p1)))
  43.                     scl        (/ v (apply 'max (cdr lst)))
  44.               )
  45.               (list scl p1 p2)
  46.        )
  47.     )
  48.   )
  49.   (fy:begin)
  50.   (if (and (if (progn
  51.                  (princ "\n选择图框<回车选取范围>...")
  52.                  (setq blk (ssget ":S" '((0 . "insert"))))
  53.                )
  54.              (progn
  55.                (vla-getboundingbox
  56.                  (vlax-ename->vla-object (ssname blk 0))
  57.                  'bp
  58.                  'up
  59.                )
  60.                (setq
  61.                  scl (list (safearray-value bp) (safearray-value up))
  62.                )
  63.              )
  64.              (setq scl (_rectang:scale))
  65.            )
  66.            (if (and blk
  67.                     (setq nscl (getreal "\n比例: "))
  68.                )
  69.              (setq scl (cons nscl (cdr scl)))
  70.              (progn (princ "\n打印比例 = ")
  71.                     (princ (car scl))
  72.                     (initget 128 "Y N")
  73.                     (setq
  74.                       kw (getkword "\n是否接受[是(Y)/否(N)]<Y>: ")
  75.                     )
  76.                     (if        (or (= kw "Y") (= kw ""))
  77.                       t
  78.                       (if (setq nscl (getreal "\n输入新比例: "))
  79.                         (setq scl (cons nscl (cdr scl)))
  80.                       )
  81.                     )
  82.              )
  83.            )
  84.            (setq height (getdist "\n文字高度: "))
  85.       )
  86.     (progn
  87.       (setq
  88.         str (vl-string-translate "." "-" (_string:decimal (car scl)))
  89.       )
  90.       (xd::doc:createDimstyleFrom
  91.         nil
  92.         (strcat "FY-" str)
  93.         (cons (list "dimtxt" height)
  94.               (cons (list "dimscale" (car scl))
  95.                     '(("dimdli" 1.0)
  96.                       ("dimexe" 1.5)
  97.                       ("dimexo" 1.0)
  98.                       ("dimasz" 1.5)
  99.                       ("dimtad" 1)
  100.                       ("dimtix" 1)
  101.                       ("dimtofl" 1)
  102.                       ("dimgap" 1.0)
  103.                       ("dimtih" 0)
  104.                       ("dimdsep" ".")
  105.                       ("dimlunit" 2) ;_单位
  106.                       ("dimdec" 2) ;_精度
  107.                      )
  108.               )
  109.         )
  110.       )
  111.       (mapcar '(lambda (x)
  112.                  (xd::doc:createSubDimstyle
  113.                    (strcat "FY-" str)
  114.                    (car x)
  115.                    (cadr x)
  116.                  )
  117.                )
  118.               '(("$2" nil)
  119.                 ("$3" nil)
  120.                 ("$4" (("DIMTOH" 1) ("DIMTIH" 0)))
  121.                 ("$6" nil)
  122.                )
  123.       )
  124.       (if (ssget "_C"
  125.                  (cadr scl)
  126.                  (caddr scl)
  127.                  '((0 . "dimension,*text"))
  128.           )
  129.         (_changescale (* height (car scl)) (strcat "FY-" str))
  130.       )
  131.     )
  132.   )
  133.   (fy:end)
  134.   (princ)
  135. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-11-27 14:11:06 | 显示全部楼层

不是这样哟,大师,您这个选择图框后为什么还要输入比例? 而且还报错:
  1. 选择对象:
  2. 比例: 1.4
  3. 请输入1:1的标注文字高度: 3
  4. Error: 错误的点参数


首先选择打印范围 ,之前只有一种方法,就是两个角点确定了范围,然后选择图框大小,就确定了比例:

  1. 选择图框一个角点:
  2. 选择对角点:
  3. 打印图框大小[A0(0)/A1(1)/A2(2)/A3(3)/A4(4)]: 4
  4. 打印比例 = 1.41414


我的意思是将多了一种选择,不仅仅靠两个角点确定范围,还可以直接通过选择块来确定范围
选择块了之后,还要选择 打印图框大小[A0(0)/A1(1)/A2(2)/A3(3)/A4(4)]:
跟选择两角点一样,自动算出打印比例




论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-27 16:03:46 来自手机 | 显示全部楼层
lucas3 发表于 2014-11-27 14:11
不是这样哟,大师,您这个选择图框后为什么还要输入比例? 而且还报错:



如果是标准图框,选择后应该可以计算出是A几及比例的

点评

图框不一定是标准的,有可能缩放过的,我的意思是,选择两角点确定与选择块确定的一个尺寸, 选择两角点操作较麻烦,只针对图框非块的情况,如果图框是块,那就直接选择块  详情 回复 发表于 2014-11-27 16:18
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-11-27 16:18:23 | 显示全部楼层
st788796 发表于 2014-11-27 16:03
如果是标准图框,选择后应该可以计算出是A几及比例的

图框不一定是标准的,有可能缩放过的,我的意思是,选择两角点确定与选择块确定的一个尺寸,


选择两角点操作较麻烦,只针对图框非块的情况,如果图框是块,那就直接选择块,仅此而已
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-28 08:36:01 | 显示全部楼层
lucas3 发表于 2014-11-27 16:18
图框不一定是标准的,有可能缩放过的,我的意思是,选择两角点确定与选择块确定的一个尺寸,

再试试
  1. (defun c:tt (/                _string:decimal              _changescale
  2.              _rectang:scale           scl              height         str
  3.              ds                nscl           kw              bp         up
  4.              blk
  5.             )
  6.   (defun _string:decimal (val / str)
  7.     (setvar "dimzin" 0)
  8.     (setq str (rtos val 2 2)
  9.           str (vl-string-right-trim "0" str)
  10.           str (vl-string-right-trim "." str)
  11.     )
  12.   )
  13.   (defun _changescale (h str)
  14.     (vlax-for obj (fy:cset)
  15.       (if (wcmatch (vla-get-objectname obj) "*Text")
  16.         (vlax-put obj 'height h)
  17.         (vlax-put obj 'stylename str)
  18.       )
  19.     )
  20.   )
  21.   (defun _rectang:scale        (p1 p2 / str lst v scl kw)
  22.     (if
  23.       (and
  24.         (if p1
  25.           t
  26.           (progn
  27.             (setq p1 (getpoint "\n第一点: "))
  28.             (setq p2 (getcorner p1 "\n对角点: "))
  29.           )
  30.         )
  31.         (progn (initget "0 1 2 3 4")
  32.                (setq kw        (getkword
  33.                           "\n打印图框大小[A0(0)/A1(1)/A2(2)/A3(3)/A4(4)]: "
  34.                         )
  35.                )
  36.         )
  37.         (setq lst (assoc kw
  38.                          '(("0" 1089 841)
  39.                            ("1" 841 594)
  40.                            ("2" 594 420)
  41.                            ("3" 420 297)
  42.                            ("4" 297 210)
  43.                           )
  44.                   )
  45.         )
  46.       )
  47.        (progn (setq v        (apply 'max (mapcar 'abs (mapcar '- p2 p1)))
  48.                     scl        (/ v (apply 'max (cdr lst)))
  49.               )
  50.               (list scl p1 p2)
  51.        )
  52.     )
  53.   )
  54.   (fy:begin)
  55.   (if (and (if (progn
  56.                  (princ "\n选择图框<回车选取范围>...")
  57.                  (setq blk (ssget ":S" '((0 . "insert"))))
  58.                )
  59.              (progn
  60.                (vla-getboundingbox
  61.                  (vlax-ename->vla-object (ssname blk 0))
  62.                  'bp
  63.                  'up
  64.                )
  65.                (setq
  66.                  scl (_rectang:scale
  67.                        (list (safearray-value bp) (safearray-value up))
  68.                      )
  69.                )
  70.                (setq scl (_rectang:scale nil nil))
  71.              )
  72.            )
  73.            (progn (princ "\n打印比例 = ")
  74.                   (princ (car scl))
  75.                   (initget 128 "Y N")
  76.                   (setq
  77.                     kw (getkword "\n是否接受[是(Y)/否(N)]<Y>: ")
  78.                   )
  79.                   (if (or (= kw "Y") (= kw ""))
  80.                     t
  81.                     (if        (setq nscl (getreal "\n输入新比例: "))
  82.                       (setq scl (cons nscl (cdr scl)))
  83.                     )
  84.                   )
  85.            )
  86.            (setq height (getdist "\n文字高度: "))
  87.       )
  88.     (progn
  89.       (setq
  90.         str (vl-string-translate "." "-" (_string:decimal (car scl)))
  91.       )
  92.       (xd::doc:createDimstyleFrom
  93.         nil
  94.         (strcat "FY-" str)
  95.         (cons (list "dimtxt" height)
  96.               (cons (list "dimscale" (car scl))
  97.                     '(("dimdli" 1.0)
  98.                       ("dimexe" 1.5)
  99.                       ("dimexo" 1.0)
  100.                       ("dimasz" 1.5)
  101.                       ("dimtad" 1)
  102.                       ("dimtix" 1)
  103.                       ("dimtofl" 1)
  104.                       ("dimgap" 1.0)
  105.                       ("dimtih" 0)
  106.                       ("dimdsep" ".")
  107.                       ("dimlunit" 2) ;_单位
  108.                       ("dimdec" 2) ;_精度
  109.                      )
  110.               )
  111.         )
  112.       )
  113.       (mapcar '(lambda (x)
  114.                  (xd::doc:createSubDimstyle
  115.                    (strcat "FY-" str)
  116.                    (car x)
  117.                    (cadr x)
  118.                  )
  119.                )
  120.               '(("$2" nil)
  121.                 ("$3" nil)
  122.                 ("$4" (("DIMTOH" 1) ("DIMTIH" 0)))
  123.                 ("$6" nil)
  124.                )
  125.       )
  126.       (if (ssget "_C"
  127.                  (cadr scl)
  128.                  (caddr scl)
  129.                  '((0 . "dimension,*text"))
  130.           )
  131.         (_changescale (* height (car scl)) (strcat "FY-" str))
  132.       )
  133.     )
  134.   )
  135.   (fy:end)
  136.   (princ)
  137. )

点评

ST大师,还是不行了 选择图框显示:Error: 参数太少 ,另外选择角点也用不成了。  详情 回复 发表于 2014-11-28 09:21
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-11-28 09:21:26 | 显示全部楼层

ST大师,还是不行了
选择图框显示:Error: 参数太少 ,另外选择角点也用不成了。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-28 09:39:38 | 显示全部楼层
lucas3 发表于 2014-11-28 09:21
ST大师,还是不行了
选择图框显示:Error: 参数太少 ,另外选择角点也用不成了。

  1. (defun c:tt (/                _string:decimal              _changescale
  2.              _rectang:scale           scl              height         str
  3.              ds                nscl           kw              bp         up
  4.              blk
  5.             )
  6.   (defun _string:decimal (val / str)
  7.     (setvar "dimzin" 0)
  8.     (setq str (rtos val 2 2)
  9.           str (vl-string-right-trim "0" str)
  10.           str (vl-string-right-trim "." str)
  11.     )
  12.   )
  13.   (defun _changescale (h str)
  14.     (vlax-for obj (fy:cset)
  15.       (if (wcmatch (vla-get-objectname obj) "*Text")
  16.         (vlax-put obj 'height h)
  17.         (vlax-put obj 'stylename str)
  18.       )
  19.     )
  20.   )
  21.   (defun _rectang:scale        (p1 p2 / str lst v scl kw)
  22.     (if
  23.       (and
  24.         (if p1
  25.           t
  26.           (progn
  27.             (setq p1 (getpoint "\n第一点: "))
  28.             (setq p2 (getcorner p1 "\n对角点: "))
  29.           )
  30.         )
  31.         (progn (initget "0 1 2 3 4")
  32.                (setq kw        (getkword
  33.                           "\n打印图框大小[A0(0)/A1(1)/A2(2)/A3(3)/A4(4)]: "
  34.                         )
  35.                )
  36.         )
  37.         (setq lst (assoc kw
  38.                          '(("0" 1089 841)
  39.                            ("1" 841 594)
  40.                            ("2" 594 420)
  41.                            ("3" 420 297)
  42.                            ("4" 297 210)
  43.                           )
  44.                   )
  45.         )
  46.       )
  47.        (progn (setq v        (apply 'max (mapcar 'abs (mapcar '- p2 p1)))
  48.                     scl        (/ v (apply 'max (cdr lst)))
  49.               )
  50.               (list scl p1 p2)
  51.        )
  52.     )
  53.   )
  54.   (fy:begin)
  55.   (if (and (if (progn
  56.                  (princ "\n选择图框<回车选取范围>...")
  57.                  (setq blk (ssget ":S" '((0 . "insert"))))
  58.                )
  59.              (progn
  60.                (vla-getboundingbox
  61.                  (vlax-ename->vla-object (ssname blk 0))
  62.                  'bp
  63.                  'up
  64.                )
  65.                (setq
  66.                  scl (_rectang:scale
  67.                        (safearray-value bp)
  68.                        (safearray-value up)
  69.                      )
  70.                )
  71.              )
  72.              (setq scl (_rectang:scale nil nil))
  73.            )
  74.            (progn (princ "\n打印比例 = ")
  75.                   (princ (car scl))
  76.                   (initget 128 "Y N")
  77.                   (setq
  78.                     kw (getkword "\n是否接受[是(Y)/否(N)]<Y>: ")
  79.                   )
  80.                   (if (or (= kw "Y") (= kw "") (not kw))
  81.                     t
  82.                     (if        (setq nscl (getreal "\n输入新比例: "))
  83.                       (setq scl (cons nscl (cdr scl)))
  84.                     )
  85.                   )
  86.            )
  87.            (setq height (getdist "\n文字高度: "))
  88.       )
  89.     (progn
  90.       (setq
  91.         str (vl-string-translate "." "-" (_string:decimal (car scl)))
  92.       )
  93.       (xd::doc:createDimstyleFrom
  94.         nil
  95.         (strcat "FY-" str)
  96.         (cons (list "dimtxt" height)
  97.               (cons (list "dimscale" (car scl))
  98.                     '(("dimdli" 1.0)
  99.                       ("dimexe" 1.5)
  100.                       ("dimexo" 1.0)
  101.                       ("dimasz" 1.5)
  102.                       ("dimtad" 1)
  103.                       ("dimtix" 1)
  104.                       ("dimtofl" 1)
  105.                       ("dimgap" 1.0)
  106.                       ("dimtih" 0)
  107.                       ("dimdsep" ".")
  108.                       ("dimlunit" 2) ;_单位
  109.                       ("dimdec" 2) ;_精度
  110.                      )
  111.               )
  112.         )
  113.       )
  114.       (mapcar '(lambda (x)
  115.                  (xd::doc:createSubDimstyle
  116.                    (strcat "FY-" str)
  117.                    (car x)
  118.                    (cadr x)
  119.                  )
  120.                )
  121.               '(("$2" nil)
  122.                 ("$3" nil)
  123.                 ("$4" (("DIMTOH" 1) ("DIMTIH" 0)))
  124.                 ("$6" nil)
  125.                )
  126.       )
  127.       (if (ssget "_C"
  128.                  (cadr scl)
  129.                  (caddr scl)
  130.                  '((0 . "dimension,*text"))
  131.           )
  132.         (_changescale (* height (car scl)) (strcat "FY-" str))
  133.       )
  134.     )
  135.   )
  136.   (fy:end)
  137.   (princ)
  138. )

点评

谢谢ST大师 选择图框块现在是可行了,计算出来的比例跟选择角点计算出来的比例是相同的了,但又有其它问题了,如下: 1. 原来选择角点,接受比例,输入字高后,范围内的标注样式同文字高度会更新,但是现在选择角  详情 回复 发表于 2014-11-28 10:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-11-28 10:36:03 | 显示全部楼层

谢谢ST大师
选择图框块现在是可行了,计算出来的比例跟选择角点计算出来的比例是相同的了,但又有其它问题了,如下:
1. 原来选择角点,接受比例,输入字高后,范围内的标注样式同文字高度会更新,但是现在选择角点会更新, 而选择块的方式不会更新。
2. 原来选择角点的方式,生成的标注样式的全局比例及文字高度是只保留一位小数的,但是现在无论是选择角点还是选择块生成的小数位又有很多了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-28 10:47:35 | 显示全部楼层
lucas3 发表于 2014-11-28 10:36
谢谢ST大师
选择图框块现在是可行了,计算出来的比例跟选择角点计算出来的比例是相同的了,但又有其它问 ...

  1. (defun c:tt (/                _string:decimal              _changescale
  2.              _rectang:scale           scl              height         str
  3.              ds                nscl           kw              bp         up
  4.              blk
  5.             )
  6.   (defun _string:decimal (val / str)
  7.     (setvar "dimzin" 0)
  8.     (setq str (rtos val 2 2)
  9.           str (vl-string-right-trim "0" str)
  10.           str (vl-string-right-trim "." str)
  11.     )
  12.   )
  13.   (defun _changescale (h str)
  14.     (vlax-for obj (fy:cset)
  15.       (if (wcmatch (vla-get-objectname obj) "*Text")
  16.         (vlax-put obj 'height h)
  17.         (vlax-put obj 'stylename str)
  18.       )
  19.     )
  20.   )
  21.   (defun _rectang:scale        (p1 p2 / str lst v scl kw)
  22.     (if
  23.       (and
  24.         (if p1
  25.           t
  26.           (progn
  27.             (setq p1 (getpoint "\n第一点: "))
  28.             (setq p2 (getcorner p1 "\n对角点: "))
  29.           )
  30.         )
  31.         (progn (initget "0 1 2 3 4")
  32.                (setq kw        (getkword
  33.                           "\n打印图框大小[A0(0)/A1(1)/A2(2)/A3(3)/A4(4)]: "
  34.                         )
  35.                )
  36.         )
  37.         (setq lst (assoc kw
  38.                          '(("0" 1089 841)
  39.                            ("1" 841 594)
  40.                            ("2" 594 420)
  41.                            ("3" 420 297)
  42.                            ("4" 297 210)
  43.                           )
  44.                   )
  45.         )
  46.       )
  47.        (progn (setq v        (apply 'max (mapcar 'abs (mapcar '- p2 p1)))
  48.                     scl        (/ v (apply 'max (cdr lst)))
  49.               )
  50.               (list (distof (rtos scl 2 1)) p1 p2)
  51.        )
  52.     )
  53.   )
  54.   (fy:begin)
  55.   (if
  56.     (and (if (progn
  57.                (princ "\n选择图框<回车选取范围>...")
  58.                (setq blk (ssget ":S" '((0 . "insert"))))
  59.              )
  60.            (progn
  61.              (vla-getboundingbox
  62.                (vlax-ename->vla-object (ssname blk 0))
  63.                'bp
  64.                'up
  65.              )
  66.              (setq
  67.                scl (_rectang:scale
  68.                      (safearray-value bp)
  69.                      (safearray-value up)
  70.                    )
  71.              )
  72.            )
  73.            (setq scl (_rectang:scale nil nil))
  74.          )
  75.          (progn        (princ "\n打印比例 = ")
  76.                 (princ (car scl))
  77.                 (initget 128 "Y N")
  78.                 (setq
  79.                   kw (getkword "\n是否接受[是(Y)/否(N)]<Y>: ")
  80.                 )
  81.                 (if (or (= kw "Y") (= kw "") (not kw))
  82.                   t
  83.                   (if (setq nscl (getreal "\n输入新比例: "))
  84.                     (setq scl (cons (distof (rtos nscl 2 1)) (cdr scl)))
  85.                   )
  86.                 )
  87.          )
  88.          (setq height (getdist "\n文字高度: "))
  89.     )
  90.      (progn
  91.        (setq
  92.          height        (distof (rtos height 2 1))
  93.          str        (vl-string-translate "." "-" (_string:decimal (car scl)))
  94.        )
  95.        (xd::doc:createDimstyleFrom
  96.          nil
  97.          (strcat "FY-" str)
  98.          (cons (list "dimtxt" height)
  99.                (cons (list "dimscale" (car scl))
  100.                      '(("dimdli" 1.0)
  101.                        ("dimexe" 1.5)
  102.                        ("dimexo" 1.0)
  103.                        ("dimasz" 1.5)
  104.                        ("dimtad" 1)
  105.                        ("dimtix" 1)
  106.                        ("dimtofl" 1)
  107.                        ("dimgap" 1.0)
  108.                        ("dimtih" 0)
  109.                        ("dimdsep" ".")
  110.                        ("dimlunit" 2) ;_单位
  111.                        ("dimdec" 2) ;_精度
  112.                       )
  113.                )
  114.          )
  115.        )
  116.        (mapcar '(lambda        (x)
  117.                   (xd::doc:createSubDimstyle
  118.                     (strcat "FY-" str)
  119.                     (car x)
  120.                     (cadr x)
  121.                   )
  122.                 )
  123.                '(("$2" nil)
  124.                  ("$3" nil)
  125.                  ("$4" (("DIMTOH" 1) ("DIMTIH" 0)))
  126.                  ("$6" nil)
  127.                 )
  128.        )
  129.        (if (ssget "_C"
  130.                   (cadr scl)
  131.                   (caddr scl)
  132.                   '((0 . "dimension,*text"))
  133.            )
  134.          (_changescale
  135.            (distof (rtos (* height (car scl)) 2 1))
  136.            (strcat "FY-" str)
  137.          )
  138.        )
  139.      )
  140.   )
  141.   (fy:end)
  142.   (princ)
  143. )

点评

谢谢ST大师,第二点问题解决了,第一个问题还没有呀 1. 选择角点,接受比例,输入字高后,范围内的标注样式同文字高度会更新,但是现在选择角点会更新, 而选择块的方式不会更新。  详情 回复 发表于 2014-11-28 11:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

 楼主| 发表于 2014-11-28 11:17:14 | 显示全部楼层

谢谢ST大师,第二点问题解决了,第一个问题还没有呀

1. 选择角点,接受比例,输入字高后,范围内的标注样式同文字高度会更新,但是现在选择角点会更新, 而选择块的方式不会更新。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-28 11:33:12 | 显示全部楼层
lucas3 发表于 2014-11-28 11:17
谢谢ST大师,第二点问题解决了,第一个问题还没有呀

1. 选择角点,接受比例,输入字高后,范围内的标 ...

选点能用,点图框的也能用啊,你要保证图框都显示,不然 ssget 选不到

点评

大师,图框在显示范围内 ,试了好多次,都没有用 ,而选角点的可以  详情 回复 发表于 2014-11-28 12:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-22 02:05 , Processed in 0.239891 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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