更改尺寸保持
从这里来http://discussion.autodesk.com/forums/thread.jspa?threadID=764691
我只是想发布这个,以防有人知道这是否可能。。。
我测试了附加的例程,以根据当前的dimstyle设置更改尺寸,但保留了它们的“Dimscale”(或尺寸大小),但我认为如果能够同时保留它们的dimstyle名称,将当前dimstyle设置的其余部分更新为一组选定的尺寸,那将是一件很棒的事情。。。
有人对此有想法吗?
dimup。lsp
当然有可能::wink:
您可以使用:
(setq t1 (entget (entsel "select")))
要获取选定dim的实体列表,可以使用以下选项:
(setq t1 (subst (cons 8 "1") (assoc 8 t1) t1 ))
修改dims图元列表的任何部分(这将更改图层)
然后使用:
(entmod t1)
修改实体。
以下是DXF代码及其含义的列表:
*此列表用于标注样式,而不是标注图元*
(cons 2 StyleName); Dimstyle name
(cons 70 0); Standard flag
(cons 3 ""); DIMPOST
(cons 4 ""); DIMAPOST
(cons 5 "_Oblique"); DIMBLK
(cons 6 "_Oblique"); DIMBLK1
(cons 7 ""); DIMBLK2
(cons 40 StyleScale); DIMSCALE
(cons 41 0.0937); DIMASZ
(cons 42 0.0937); DIMEXO
(cons 43 0.38); DIMDLI
(cons 44 0.0625); DIMEXE
(cons 45 0.0); DIMRND
(cons 46 0.0625); DIMDLE
(cons 47 0.0); DIMTP
(cons 48 0.0); DIMTM
(cons 140 0.0937); DIMTXT
(cons 141 0.09); DIMCEN
(cons 142 0.0); DIMTSZ
(cons 143 25.4); DIMALTF
(cons 144 1.0); DIMLFAC
(cons 145 0.0); DIMTVP
(cons 146 1.0); DIMTFAC
(cons 147 0.0625); DIMGAP
(cons 71 0); DIMTOL
(cons 72 0); DIMLIM
(cons 73 0); DIMTIH
(cons 74 0); DIMTOH
(cons 75 0); DIMSE1
(cons 76 0); DIMSE2
(cons 77 1); DIMTAD
(cons 78 3); DIMZIM
(cons 170 0); DIMALT
(cons 171 2); DIMALTD
(cons 172 0); DIMTOFL
(cons 173 0); DIMSAH
(cons 174 0); DIMTIX
(cons 175 0); DIMSOXD
(cons 176 0); DIMCLRD
(cons 177 0); DIMCLRE
(cons 178 2); DIMCRRT
(cons 270 4); DIMUNIT
(cons 271 4); DIMDEC
(cons 272 4); DIMTDEC
(cons 273 2); DIMALTU
(cons 274 2); DIMALTTD
(cons 275 0); DIMAUNIT
(cons 276 2); DIM?????
(cons 277 4); DIMLUNIT
(cons 279 2); DIM????
(cons 280 0); DIMJUST
(cons 281 0); DIMSD1
(cons 282 0); DIMSD2
(cons 283 1); DIMTOLJ
(cons 284 0); DIMTZIN
(cons 285 0); DIMALTZ
(cons 286 0); DIMALTTZ
(cons 287 5); DIMFIT
(cons 288 0); DIMUPT
; DIMTXSTY
(cons 340 (tblobjname "style" TextStyle))
; DIMLDRBLK
(cons 342 (cdr (assoc 330 (entget(tblobjname "block" "_Oblique")))))
; DIMLDRBLK1
(cons 343 (cdr (assoc 330 (entget(tblobjname "block" "_Oblique")))))
; DIMLDRBLK2 Block for the leader
(cons 341 (cdr (assoc 330 (entget(tblobjname "block" "")))))
这应该让你开始。 太棒了我知道我在这里做了些什么。。。。
;;Routine to change all dimensions to the current dimstyle preserving
their dimscale and dimstyle name
(defun c:dimes2 ()
(setq ss1 (ssget "X" (list (cons 0 "dimension"))))
(setq SSLEN (sslength SS1))
(setq sscnt 0 sspr (1+ sscnt))
(repeat sslen
(prompt (strcat "\nProcessing " (itoa SSPR) " of " (itoa SSLEN) " dimensions."))
(setq EN (ssname SS1 SSCNT))
;set dimscale
(command "dimscale" (vla-get-ScaleFactor (vlax-ename->vla-object EN)))
(COMMAND "DIM1" "UPDATE" EN "")
(setq sscnt (1+ sscnt) SSPR (1+ sscnt))
);r
(princ)
);d
;;Another code
(PRINC
"\nSelect Dimensions and text to apply the background fill and update...: "
)
(AND (SETQ ss (SSGET "_:L" '((0 . "*DIMENSION*"))))
(FOREACH x (VL-REMOVE-IF 'LISTP (MAPCAR 'CADR (SSNAMEX ss)))
(COND
((EQ "DIMENSION" (CDR (ASSOC 0 (SETQ elist (ENTGET x)))))
(SETQ elist (SUBST (CONS 340 (tblobjname "style" TextStyle)) (ASSOC 340 elist) elist)
) ;_ setq
(ENTMOD elist)
(T T)
) ;_ cond
) ;_ foreach
) ;_ and
此代码(键入dimes2)出现“输入时列表格式错误”错误,但将当前图形中的所有维度重命名为当前dimstyle名称,保留了它们自己的变量。。。。我需要的恰恰相反。。。保留Dimscale和dimstyle名称,但更新所有变量。。。
实际上,我试图更新的唯一变量是Dimtfill。。。。
有谁愿意帮忙吗?
--------------------------------
好像我的头颠倒了。。。 我认为添加这样的东西可能会管用。。。但显然不起作用。。。。
;;Routine to change all dimensions to the current dimstyle preserving the dimscale and dimstyle name for each dimension
;;;make sure to set the dimstyle you require as current before running this routine
(defun c:dimes3 ()
(setq ss1 (ssget "X" (list (cons 0 "dimension"))))
(setq SSLEN (sslength SS1))
(setq sscnt 0 sspr (1+ sscnt))
(repeat sslen
(prompt (strcat "\nProcessing " (itoa SSPR) " of " (itoa SSLEN) " dimensions."))
(setq EN (ssname SS1 SSCNT))
;set dimscale
(command "dimscale" (vla-get-ScaleFactor (vlax-ename->vla-object EN)))
(command "dimstyle" (cdr (assoc 40 (tblsearch "DIMSTYLE" (dxf 3 EN)))))
(COMMAND "DIM1" "UPDATE" EN "")
(setq sscnt (1+ sscnt) SSPR (1+ sscnt))
);r
(princ)
);d
这是设置dimstyle(从特定对象还原)的例程的一部分。。。。但我不知道如何将其插入我的代码中。。。
(command ".DIMSTYLE" "R" (cdr (assoc 3 EntList@)))
(setq DimStyle@ (tblsearch "STYLE" (getvar "DIMTXSTY")))
嘿,蒂姆。。。。你知道我可以为Dimtfill使用什么“(cons”代码吗?
页:
[1]