gilsoto13 发表于 2022-7-6 11:34:24

更改尺寸保持

从这里来
 
http://discussion.autodesk.com/forums/thread.jspa?threadID=764691
 
我只是想发布这个,以防有人知道这是否可能。。。
 
我测试了附加的例程,以根据当前的dimstyle设置更改尺寸,但保留了它们的“Dimscale”(或尺寸大小),但我认为如果能够同时保留它们的dimstyle名称,将当前dimstyle设置的其余部分更新为一组选定的尺寸,那将是一件很棒的事情。。。
 
有人对此有想法吗?
dimup。lsp

TimSpangler 发表于 2022-7-6 11:51:18

 
当然有可能::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" "")))))

 
这应该让你开始。

gilsoto13 发表于 2022-7-6 12:08:29

太棒了我知道我在这里做了些什么。。。。
 

;;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。。。。
 
有谁愿意帮忙吗?
--------------------------------
好像我的头颠倒了。。。

gilsoto13 发表于 2022-7-6 12:14:01

我认为添加这样的东西可能会管用。。。但显然不起作用。。。。
 

;;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

gilsoto13 发表于 2022-7-6 12:27:20

这是设置dimstyle(从特定对象还原)的例程的一部分。。。。但我不知道如何将其插入我的代码中。。。
 

   (command ".DIMSTYLE" "R" (cdr (assoc 3 EntList@)))
   (setq DimStyle@ (tblsearch "STYLE" (getvar "DIMTXSTY")))

gilsoto13 发表于 2022-7-6 12:41:44

 
嘿,蒂姆。。。。你知道我可以为Dimtfill使用什么“(cons”代码吗?
页: [1]
查看完整版本: 更改尺寸保持