明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: liminnet

[资源] [原创]检查那个尺寸的值被改动过啦和非1:1画的图

  [复制链接]
发表于 2009-11-5 17:59:00 | 显示全部楼层
本帖最后由 作者 于 2009-11-11 7:57:39 编辑

為甚麼我在R2005~R2006 與 R2006以上用不一樣的方法

顯示內容被替換掉的尺寸對像
Type LAI_DIS_DIM_UPDATE_VAL,By LUCAS
恢復內容被替換掉的尺寸對像
Type LAI_REV_DIM_UPDATE_VAL,By LUCAS

vlx版 for R2005以上(未詳細測試) 更新對角度亦有效

本帖子中包含更多资源

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

x
 楼主| 发表于 2009-11-6 09:02:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-11-6 15:39:00 | 显示全部楼层

因我把LAI_DIS_DIM_UPDATE_VAL改為切換開關,但沒有寫好,樓上程序已更新

我的程序是修改個別尺寸,你的是修改DIMSTYLE OR 個別尺寸

 楼主| 发表于 2009-11-7 17:14:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-11-9 08:09:00 | 显示全部楼层

到底貼了甚麼代碼會出現下列??

function XML() {
    [native code]
}

 楼主| 发表于 2009-11-9 08:51:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-11-9 12:05:00 | 显示全部楼层
  1. for r2005~r2006
  2. (vl-load-com)
  3. (defun KO->GET-DIMDXFVAL (ENA DXF / DATA)
  4.   (if (setq DATA (assoc -3 (entget ENA '("ACAD"))))
  5.     (cdadr (member (cons 1070 DXF) (cadr DATA)))
  6.   )
  7.   ;;(vla-get-linearscalefactor (vlax-ename->vla-object ENA))
  8. )
  9. (defun KO->LSTPRINC (LST)
  10.   (foreach L LST
  11.     (princ L)
  12.   )
  13. )
  14. (defun KO->LSTALERT (STR LST)
  15.   (foreach L LST
  16.     (setq STR (strcat STR L))
  17.   )
  18.   (alert STR)
  19. )
  20. (defun KO->SS-2LST (SS / N LST)
  21.   (setq N 0)
  22.   (repeat (sslength SS)
  23.     (setq LST (cons (ssname SS N) LST))
  24.     (setq N (1+ N))
  25.   )
  26.   LST
  27. )
  28. (defun KO->DISCHAVAL_ONOROFF
  29.        (ENA MODE TXTCOL MASKCOL / DXF_LST ENA_DATA)
  30.   (if (not (tblobjname "APPID" "ACAD_DSTYLE_DIMTEXT_FILL"))
  31.     (regapp "ACAD_DSTYLE_DIMTEXT_FILL")
  32.   )
  33.   (if MODE
  34.     (progn
  35.       (setq DXF_LST
  36.       (list
  37.         (list '(1070 . 376) '(1070 . 2))
  38.         (list '(1070 . 377)
  39.        (cons 1004 MASKCOL)
  40.         )
  41.       )
  42.       )
  43.       (vlax-put (vlax-ename->vla-object ENA) 'TEXTCOLOR TXTCOL)
  44.     )
  45.     (vlax-put (vlax-ename->vla-object ENA)
  46.        'TEXTCOLOR
  47.        (getvar "DIMCLRT")
  48.     )
  49.   )
  50.   (setq ENA_DATA (entget ENA))
  51.   (entmod
  52.     (cons
  53.       (list
  54. -3
  55. (apply 'append
  56.         (list (list "ACAD_DSTYLE_DIMTEXT_FILL")
  57.        (apply 'append DXF_LST)
  58.         )
  59. )
  60.       )
  61.       ENA_DATA
  62.     )
  63.   )
  64. )
  65. ;;;以上代碼為上面程序的主代碼,僅供參考
  66. ;;;顯示內容被替換掉的尺寸對像
  67. (defun C:LAI_DIS_DIM_UPDATE_VAL ()
  68.   (KO_DIM_UPDATE_VAL t)
  69. )     ;ko_end
  70. (princ
  71.   "\n顯示內容被替換掉的尺寸對像\nTYPE LAI_DIS_DIM_UPDATE_VAL,By LUCAS"
  72. )
  73. ;;;恢復內容被替換掉的尺寸對像
  74. (defun C:LAI_REV_DIM_UPDATE_VAL ()
  75.   (KO_DIM_UPDATE_VAL NIL)
  76. )     ;ko_end
  77. (princ
  78.   "\n恢復內容被替換掉的尺寸對像\nTYPE LAI_REV_DIM_UPDATE_VAL,By LUCAS"
  79. )
  80. (defun KO_DIM_UPDATE_VAL (MODE    /     HOLDECHO HOLDOSMODE
  81.      I    I     II      I_SUM    II_SUM
  82.      SS    X     MODE_MSG DATA
  83.     )
  84.   ;;(KO->ERROR-INIT (list '("cmdecho" 0 "osmode" 0) 1))
  85.   (setq HOLDEHCO (getvar "cmdecho"))
  86.   (setvar "cmdecho" 0)
  87.   (setq HOLDOSMODE (getvar "osmode"))
  88.   (setvar "osmode" 0)
  89.   (setq I 0
  90. I_SUM 0
  91. II 0
  92. II_SUM 0
  93. SS NIL
  94.   )
  95.   (setq MODE_MSG (if MODE
  96.      "顯示"
  97.      "恢復"
  98.    )
  99.   )
  100.   (mapcar
  101.     '(lambda (X)
  102.        (cond
  103.   ((and (setq DATA (KO->GET-DIMDXFVAL X 144))
  104.         (not (equal DATA 1))
  105.    )
  106.    (if
  107.      (vl-catch-all-error-p
  108.        (vl-catch-all-apply
  109.   'KO->DISCHAVAL_ONOROFF
  110.   (list X
  111.         MODE
  112.         6
  113.         "1800000001000000050000C3000000000000000000000000"
  114.   )
  115.        )
  116.      )
  117.       (setq II (1+ II))
  118.       (setq II_SUM (1+ II_SUM))
  119.    )
  120.   )
  121.   ((wcmatch (cdr (assoc 1 (entget X))) "~")
  122.    (if
  123.      (vl-catch-all-error-p
  124.        (vl-catch-all-apply
  125.   'KO->DISCHAVAL_ONOROFF
  126.   (list X
  127.         MODE
  128.         2
  129.         "1800000001000000010000C3000000000000000000000000"
  130.   )
  131.        )
  132.      )
  133.       (setq I (1+ I))
  134.       (setq I_SUM (1+ I_SUM))
  135.    )
  136.   )
  137.        )
  138.      )
  139.     (KO->SS-2LST
  140.       (setq SS (ssget "X" '((0 . "DIMENSION"))))
  141.     )
  142.   )
  143.   (cond
  144.     ((and SS (or (/= I 0) (/= II 0)))
  145.      (KO->LSTALERT
  146.        "出現程序出錯信息,統計如下:\n"
  147.        (list
  148.   (strcat "共找到"
  149.    (itoa (sslength SS))
  150.    "個內容被替換掉的尺寸對像"
  151.   )
  152.   "\n "
  153.   "處理結果如下:"
  154.   "\n "
  155.   (strcat MODE_MSG
  156.    "了"
  157.    (itoa (+ I I_SUM))
  158.    "個內容被替換掉的尺寸對像"
  159.   )
  160.   "\n"
  161.   (strcat "有"
  162.    (itoa I)
  163.    "個內容被替換掉的尺寸對像"
  164.    MODE_MSG
  165.    "過程中,出現異常,沒有"
  166.    MODE_MSG
  167.    "出來"
  168.   )
  169.   "\n"
  170.   (strcat MODE_MSG
  171.    "了"
  172.    (itoa (+ II II_SUM))
  173.    "個同時具備內容被替換、測量因子非1的兩個條件的尺寸對像"
  174.   )
  175.   "\n"
  176.   (strcat "有"
  177.    (itoa II)
  178.    "個同時具備內容被替換、測量因子非1的兩個條件的尺寸對像"
  179.    MODE_MSG
  180.    "過程中,出現異常,沒有"
  181.    MODE_MSG
  182.    "出來"
  183.   )
  184.        )
  185.      )
  186.     )
  187.     (SS
  188.      (KO->LSTPRINC
  189.        (list
  190.   (strcat "\n共找到"
  191.    (itoa (sslength SS))
  192.    "個內容被替換掉的尺寸對像"
  193.   )
  194.   (strcat "\n"
  195.    MODE_MSG
  196.    "了"
  197.    (itoa (+ I I_SUM))
  198.    "個內容被替換掉的尺寸對像"
  199.   )
  200.   (strcat "\n"
  201.    MODE_MSG
  202.    "了"
  203.    (itoa (+ II II_SUM))
  204.    "個同時具備內容被替換、測量因子非1的兩個條件的尺寸對像"
  205.   )
  206.        )
  207.      )
  208.     )
  209.     (t (alert "本圖中沒有內容被替換掉的尺寸"))
  210.   )     ;end_cond
  211.   ;;(KO->ERROR-RESTORE)
  212.   (setvar "osmode" HOLDOSMODE)
  213.   (setvar "cmdecho" HOLDEHCO)
  214.   (princ)
  215. )     ;ko_end
 楼主| 发表于 2009-11-9 12:35:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-11-9 13:02:00 | 显示全部楼层

龙版主太厉害了.

发表于 2009-11-9 17:28:00 | 显示全部楼层
liminnet发表于2009-11-9 12:35:00厉害,不过没有文字颜色的恢复功能,

程序上這段就是

(vlax-put (vlax-ename->vla-object ENA)
       'TEXTCOLOR
       (getvar "DIMCLRT")
)

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

本版积分规则

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

GMT+8, 2025-6-17 04:36 , Processed in 0.148905 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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