找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1745|回复: 18

[求助] [求助]:求斑竹及高手们帮忙!

[复制链接]
发表于 2005-11-2 17:29:21 | 显示全部楼层 |阅读模式

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

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

×
想批量把尺寸标注的extension line origin 点移动到dimension line location上,具体样式见附图,请高手帮忙!谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 11307个

财富等级: 富甲天下

发表于 2005-11-2 21:55:32 | 显示全部楼层
不知下面的程序是否满足楼主的要求。

  1. ;消除尺寸界限 zxq0220
  2. (DEFUN C:CHDIM ()
  3. (SETVAR "CMDECHO" 0)
  4. (SETQ OLDOS (GETVAR "OSMODE"))
  5. (COMMAND ".UNDO" "BE")
  6. (SETVAR "OSMODE" 0)
  7. (PROMPT "\nSelect Dimension :")
  8. (IF (SETQ SS (SSGET '((0 . "DIMENSION")))) (PROGN
  9.   (SETQ DSE1 (GETVAR "DIMSE1") DSE2 (GETVAR "DIMSE2"))
  10.   (SETVAR "DIMSE1" 1)  (SETVAR "DIMSE2" 1)
  11.   (SETQ SL (SSLENGTH SS) I 0)
  12.   (REPEAT SL
  13.    (SETQ EN (SSNAME SS I))
  14.    (COMMAND "DIMSTYLE" "APPLY" EN "")
  15.    (SETQ LC (ENTGET EN) I (1+ I))
  16.    (SETQ P1 (CDR (ASSOC 13 LC))
  17.          P2 (CDR (ASSOC 14 LC))
  18.          P3 (CDR (ASSOC 11 LC))
  19.          ANG (CDR (ASSOC 50 LC))
  20.          AL (CDR (ASSOC 70 LC)))
  21.    (IF (> (- (* AL 2.0) (/ AL 2)) 0.01)
  22.     (SETQ ANG (ANGLE P1 P2) DS (DISTANCE P1 P2)
  23.           PT1 (POLAR P3 ANG (/ DS 2))
  24.           PT2 (POLAR PT1 (+ ANG PI) DS))
  25.     (IF (EQUAL ANG 0.0 0.0001)
  26.      (SETQ PT1 (LIST (CAR PT1) (CADR PT3) (CADDR PT1))
  27.            PT2 (LIST (CAR PT2) (CADR PT3) (CADDR PT2)))
  28.      (SETQ PT1 (LIST (CAR PT3) (CADR PT1) (CADDR PT1))
  29.            PT2 (LIST (CAR PT3) (CADR PT2) (CADDR PT2)))
  30.     )
  31.    )
  32.    (SETQ LC (SUBST (CONS 13 PT1) (ASSOC 13 LC) LC)
  33.          LC (SUBST (CONS 14 PT2) (ASSOC 14 LC) LC))
  34.    (ENTMOD LC)
  35.   )
  36.   (SETVAR "DIMSE1" DSE1)  (SETVAR "DIMSE2" DSE2)
  37. ))
  38. (COMMAND ".UNDO" "E")
  39. (SETVAR "OSMODE" OLDOS)
  40. (SETVAR "CMDECHO" 1)
  41. (PRINC)
  42. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-2 23:11:14 | 显示全部楼层
谢谢楼上老大回复,但经测试不满足我的要求,第一,extension line origin 点没有在dimension line location线上,第二,尺寸值和arrowheads大小也被改变了。请在百忙之中,再仔细看看我的要求(附带的图)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-2 23:47:19 | 显示全部楼层
  1. [FONT=courier new]
  2. (load "xyp_lib")
  3. ;|加载通用函数(可在签名栏直接下载)
  4. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  5. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  6. ★1·在acad.lsp中增加(load"xyp_lib")
  7. ■2·在每个程序内增加(load"xyp_lib")
  8. ■3·在command下,输入(load"xyp_lib")
  9. ■4·在菜单.mnl中增加(load"xyp_lib")
  10. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  11. [COLOR=red] ★通用函数下载地址:[/COLOR]
  12. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  13. |;

  14. ;;;消除尺寸界限
  15. (defun c:test ()
  16.   (cmdla0)
  17.   (if (null sc)
  18.     (setbl)
  19.   )
  20.   (setvar "dimexe" 0)
  21.   (setvar "dimblk" "dot")
  22.   (setvar "dimblk1" "dot")
  23.   (setvar "dimblk2" "dot")
  24.   (setvar "DIMTSZ" 0)
  25.   (setvar "DIMEXE" 0)
  26.   (setvar "DIMASZ" (* sc 150))
  27.   (setq        ss (ssget '((0 . "DIMENSION")))
  28.         i  -1
  29.   )
  30.   (while (setq s1 (ssname ss (setq i (1+ i))))
  31.     (setq pt10         (xyp-get-dxf 10 s1)
  32.           pt11         (xyp-get-dxf 11 s1)
  33.           pt13         (xyp-get-dxf 13 s1)
  34.           pt14         (xyp-get-dxf 14 s1)
  35.           mode70 (xyp-get-dxf 70 s1)
  36.           mode50 (xyp-get-dxf 50 s1)
  37.     )
  38.     (cond ((and        (= mode70 32)
  39.                 (= mode50 0)
  40.            )
  41.            (setq pt13a (list (car pt13) (cadr pt10)))
  42.            (sub_upd s1 14 pt10)
  43.            (sub_upd s1 13 pt13a)
  44.           )
  45.           ((and        (= mode70 32)
  46.                 (= mode50 (* pi 0.5))
  47.            )
  48.            (setq pt13a (list (car pt10) (cadr pt13)))
  49.            (sub_upd s1 14 pt10)
  50.            (sub_upd s1 13 pt13a)
  51.           )
  52.           ((and        (= mode70 33)
  53.                 (= mode50 0)
  54.            )
  55.            (sub_upd s1 10 pt14)
  56.            (command "move" s1 "" Pt14 pt10)
  57.           )
  58.           (t (princ))
  59.     )
  60.     (command "dim" "upd" s1 "" "e")
  61.   )
  62.   (cmdla1)
  63. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-3 00:44:25 | 显示全部楼层
谢谢xyp1964斑竹的热心帮助,但还是没有达到我的要求,具体使用效果见附图。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-3 01:13:27 | 显示全部楼层
我所用的DIM样式(见附件),在2006下作业,对连续标注的一般第一个好用,其他的不好用(仅测试几次)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-3 01:57:55 | 显示全部楼层
最初由 lizhongf 发布
[B]谢谢xyp1964斑竹的热心帮助,但还是没有达到我的要求,具体使用效果见附图。 [/B]

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

使用道具 举报

 楼主| 发表于 2005-11-3 09:36:31 | 显示全部楼层
我把我的图(见附件)发上来,请斑竹及个高手测试,使用该程序前尺寸值为3000,使用后变为3000。00,但我要求使用后尺寸值仍为3000。注意:尺寸样式设定中的内容不容许更改!!!也就是说对应的尺寸样式设定中的Primary Units中的Precision的值不能被改变!下面是我在本论坛上申请过的程序,能满足我的要求,但就是麻烦些,每次只能选对齐的尺寸,另外还要选两次定位点,请斑竹及个高手给予改进或有更好的效率更高的解决办法。
(defun c:test (/ ang e en jj len olderr os pt1 pt2 pt3 pt4 ss aeoerr
                     j dxf
                  )
  (defun dxf(a b)(cdr(assoc a b)))
  (defun aeoerr (msg)
    (command "_.undo" "end" ^c)
    (setvar "osmode" os)
    (setq *error* olderr)
  )
  (defun j (pt1 pt2 ss / ent entl i np13 np14 p10 p13 p14 ptt)
  ;
    (setq pt1 (trans pt1 1 0)
          pt2 (trans pt2 1 0)
          i 0
    )
    (repeat (sslength ss)
      (setq ent (ssname ss i)
            entl (entget ent)
            p10 (cdr (assoc 10 entl))
            p13 (cdr (assoc 13 entl))
            p14 (cdr (assoc 14 entl))
            ptt (cdr (assoc 11 entl))
            i (1+ i)
            np14 (inters
                   pt1
                   pt2
                   p14
                   p10
                   nil
                 )
      )
      (if (not (member '(100 . "AcDbRotatedDimension") entl))
        (setq np13 (polar np14 (angle p14 p13) (distance p14 p13)))
        (setq np13 (inters
                     pt1
                     pt2
                     p13
                     (polar p13 (angle p14 p10) 100)
                     nil
                   )
        )
      )
      (setq entl (subst
                   (cons 13 np13)
                   (assoc 13 entl)
                   entl
                 )
            entl (subst
                   (cons 14 np14)
                   (assoc 14 entl)
                   entl
                 )
      )
      (entmod entl)
    )
  )                                       
  ;;;;;;;
  (setq os (getvar "osmode")
        olderr *error*
        *error* aeoerr
  )
  (setvar "osmode" 0)
  (command "undo" "group")
  ;(prompt "\nby aeo")
  (prompt "\n请选择需要修正的尺寸")
  (if (setq ss (ssget '((0 . "DIMENSION"))))
    (progn
      (setq en (entget (ssname ss 0)))
      (if (member '(100 . "AcDbRotatedDimension") en)
        (setq ang (dxf 50 en))
        (setq ang (angle (dxf 13 en) (dxf 14 en)))
      )
    )
  )
  (if (and
        ang
        (setq pt1 (getpoint "\n尺寸线位置(回车不改):"))
      )
    (progn
      (setq pt2 (polar pt1 ang 1000)
            jj 0
            len (sslength ss)
      )
      (while (< jj len)
        (setq e (ssname ss jj)
              en (entget (ssname ss jj))
              pt3 (dxf 10 en)
              pt4 (inters
                    pt1
                    pt2
                    pt3
                    (polar pt3 (+ ang (* 0.5 pi)) 100)
                    nil
                  )
              jj (1+ jj)
        )
        (command "move" e "" pt3 pt4)
      )
    )
  )
  (if (and
        ang
        (setq pt1 (getpoint "\n引出线位置(回车不改):"))
      )
    (j pt1 (polar pt1 ang 100) ss)
  )
  (setvar "osmode" os)
  (setq *error* olderr)
  (command "_.undo" "end")
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-3 16:01:17 | 显示全部楼层
  1. [FONT=courier new]
  2. ;;;消除尺寸界限
  3. (defun c:test ()
  4.   (cmdla0)
  5.   (if (null sc)
  6.     (setbl)
  7.   )
  8.   (setvar "dimexe" 0)
  9.   (setvar "dimblk" "dot")
  10.   (setvar "dimblk1" "dot")
  11.   (setvar "dimblk2" "dot")
  12.   (setvar "DIMTSZ" 0)
  13.   (setvar "DIMEXE" 0)
  14.   (setvar "DIMFIT" 0)
  15.   (setvar "DIMASZ" (* sc 150))
  16.   (setq        ss (ssget '((0 . "DIMENSION")))
  17.         i  -1
  18.   )
  19.   (while (setq s1 (ssname ss (setq i (1+ i))))
  20.     (setq pt10         (xyp-get-dxf 10 s1)
  21.           pt11         (xyp-get-dxf 11 s1)
  22.           pt13         (xyp-get-dxf 13 s1)
  23.           pt14         (xyp-get-dxf 14 s1)
  24.           mode70 (xyp-get-dxf 70 s1)
  25.           mode50 (xyp-get-dxf 50 s1)
  26.     )
  27.     (cond ((and        (or(= mode70 32)
  28.                   (= mode70 160))
  29.                 (or(= mode50 0)(= mode50 pi))
  30.            )
  31.            (setq pt13a (list (car pt13) (cadr pt10)))
  32.            (sub_upd s1 14 pt10)
  33.            (sub_upd s1 13 pt13a)
  34.           )
  35.           ((and        (or(= mode70 32)
  36.                    (= mode70 160)
  37.                    )
  38.                 (= mode50 (* pi 0.5))
  39.            )
  40.            (setq pt13a (list (car pt10) (cadr pt13)))
  41.            (sub_upd s1 14 pt10)
  42.            (sub_upd s1 13 pt13a)
  43.           )
  44.           ((and        (= mode70 33)
  45.                 (= mode50 0)
  46.            )
  47.            (sub_upd s1 10 pt14)
  48.            (command "move" s1 "" Pt14 pt10)
  49.           )
  50.           (t (princ))
  51.     )
  52.     (command "dim" "upd" s1 "" "e")
  53.   )
  54.   (cmdla1)
  55. )
  56. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-3 16:42:57 | 显示全部楼层
谢谢斑竹,不过还是不行,我把我的带有尺寸标注的DWG发上来,里面有变换前和变换后的尺寸,其中1是原始尺寸,2是用了斑竹的程序后的尺寸,3是我想要的尺寸状态(用了我上面贴的程序变换后的,但就是麻烦些,每次只能选同一方位的尺寸,另外还要选两次定位点,用这个程序变换后的是我想要的)。请斑竹帮我彻底解决这个问题(或把我贴上程序改进),谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-3 16:44:05 | 显示全部楼层
该DWG的内容:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-3 19:24:30 | 显示全部楼层
  1. [FONT=courier new](defun c:test ()
  2.   (cmdla0)
  3.   (if (null sc)
  4.     (setbl)
  5.   )
  6.   (setvar "osmode" 0)
  7.                                         ;(SETVAR "DIMSE1" 1)  (SETVAR "DIMSE2" 1)
  8.   (setvar "dimexe" 0)
  9.   (setvar "dimtxt" (* 400 sc))
  10.   (setvar "dimblk" "dot")
  11.   (setvar "dimblk1" "dot")
  12.   (setvar "dimblk2" "dot")
  13.   (setvar "dimdec" 0)
  14.   (setvar "DIMTSZ" 0)
  15.   (setvar "DIMEXE" 0)
  16.   (setvar "DIMFIT" 0)
  17.   (setvar "DIMASZ" (* sc 150))
  18.   (setq        ss (ssget '((0 . "DIMENSION")))
  19.         i  -1
  20.   )
  21.   (while (setq s1 (ssname ss (setq i (1+ i))))
  22.     (command "dim1" "_hometext" s1 "")
  23.     (setq pt10         (xyp-get-dxf 10 s1)
  24.           pt11         (xyp-get-dxf 11 s1)
  25.           pt13         (xyp-get-dxf 13 s1)
  26.           pt14         (xyp-get-dxf 14 s1)
  27.           mode70 (xyp-get-dxf 70 s1)
  28.           mode50 (xyp-get-dxf 50 s1)
  29.     )
  30.     (cond ((and        (= mode70 32)
  31.                 (or (= mode50 0) (= mode50 pi))
  32.            )
  33.            (setq pt13a (list (car pt13) (cadr pt10)))
  34.            (sub_upd s1 14 pt10)
  35.            (sub_upd s1 13 pt13a)
  36.           )
  37.           ((and        (= mode70 160)
  38.                 (or (= mode50 0) (= mode50 pi))
  39.            )
  40.            (setq pt13a (list (car pt13) (cadr pt10)))
  41.            (sub_upd s1 13 pt13a)
  42.            (sub_upd s1 14 pt10)
  43.           )
  44.           ((and        (= mode70 161)
  45.                 (or (= mode50 0) (= mode50 pi))
  46.            )
  47.            (setq pt13a (list (car pt10) (cadr pt13)))
  48.            (sub_upd s1 13 pt13a)
  49.            (sub_upd s1 14 pt10)
  50.           )

  51.           ((and        (or (= mode70 32)
  52.                     (= mode70 160)
  53.                 )
  54.                 (= mode50 (* pi 0.5))
  55.            )
  56.            (setq pt13a (list (car pt10) (cadr pt13)))
  57.            (sub_upd s1 14 pt10)
  58.            (sub_upd s1 13 pt13a)
  59.           )

  60.           ((and        (= mode70 33)
  61.                 (= mode50 0)
  62.            )
  63.            (sub_upd s1 10 pt14)
  64.            (command "move" s1 "" Pt14 pt10)
  65.           )
  66.           (t (princ))
  67.     )
  68.     (command "dim" "upd" s1 "" "e")
  69.   )
  70.   (cmdla1)
  71. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-3 20:06:27 | 显示全部楼层
try

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

使用道具 举报

 楼主| 发表于 2005-11-3 22:49:11 | 显示全部楼层
谢谢斑竹及狂刀大侠,现在能满足使用要求了,斑竹的能否再改进一下就是要保持原尺寸样式不变,也就是说变换后的尺寸的文字大小、文字字型、箭头的样式和箭头大小保持原样,那就完美了!再次感谢两位的大力帮忙!
      另外狂刀大侠能否提供原程序(方便的话)?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-4 00:25:31 | 显示全部楼层
程序和版主的大同小异啦
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 18:38 , Processed in 0.200735 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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