muck 发表于 2022-7-6 15:11:04

拾取尺寸以设置dimst

拾取尺寸以设置dimstyle特性,AutoCAD 2009。
 
有人做了一个程序来匹配dimstyle吗
属性设置为拾取的标注。
 
允许用户选择
标注对象并具有所有dimstyle特性
匹配该维度?
 
使用VBA或Lisp。
 
非常感谢。

CmdrDuh 发表于 2022-7-6 15:20:42

如果它有过多功能,您是否希望更新样式以包含过多功能?您是否正在尝试更新现有样式以匹配您选择的样式?如果可以选择尺寸,则该样式似乎已存在于该图形中。

muck 发表于 2022-7-6 15:30:43

好的,是的,匹配文本样式,但我更感兴趣的是暗文本高度,箭头大小,暗偏移等,这将保持一个人手动重置变量,以获得匹配的暗设置。
 
非常感谢。

uddfl 发表于 2022-7-6 15:35:05

我还一直在寻找一个例程,将尺寸变量从一个dimstyle匹配到另一个dimstyle(在我工作的地方,图形是以“传统”的方式完成的,每个比例有一个dimstyle;许多图形有几个不同的比例模型和一系列尺寸样式,它们看起来几乎总是不同的)。
 
我还没有在网上找到这个,所以我可能只是自己写LISP。其想法是使用entget和assoc获得原始DimStyle的每个变量的值,然后相应地entmod目标DimStyle(Dimscale除外)的每个变量,将组码可能与“if”函数匹配。如果我做完了,我会把它寄出去。这可能是一个相当简单的函数,我只是还没有开始讨论它。
 
我还需要一个维度风格的合并工具(如txtmrg),但这是另一个主题,可能超出了我的编程能力。

CAB 发表于 2022-7-6 15:47:09

不确定这是否是你想要的。
GetDimorText。lsp

au-s 发表于 2022-7-6 15:52:03

在大家的帮助下,我制作了一个不需要任何DimStyles的lisp:
 
我称之为AIX\u DIMVariabler。保存我想要的所有变量的lsp。
然后,我调用了我想通过菜单访问的不同尺寸样式的变量。
 
 
这是AIX\u DimVariabler。lsp您可以删除(如果…样式行导致我搜索应在dimstyles中的样式)。
我搜索AIX\u ISO,如果没有,我通过C:AIXTXT加载它。。。
如果你想删除这行,你可以
(setvar“dimtxsty”“AIX\u ISO”)
或者将其设置为标准或其他。。。
 
(变量):
 
defun dim_variabler ()
(if (not (tblsearch "style" "AIX_ISO"))
   (C:AIXTXT)
)
(setvar "dimadec" 0)
(setvar "dimalttz" 0)
(setvar "dimcen" 4.0)
(setvar "dimdec" 0)
(setvar "dimtix" 0)
(setvar "dimatfit" 3)
(setvar "dimtmove" 2)
(setvar "dimdli" 3)
(setvar "dimdsep" ",")
(setvar "dimdle" 2.0)
(setvar "dimexe" 2.0)
(setvar "dimexo" 3.0)
(setvar "dimlfac" 1)
(command "dimtxt" 3.0)
(command "dimtih" "off")
(command "dimtoh" "off")
(setvar "dimtxsty" "AIX_ISO")
)
(defun LinjerDim ()
(setvar "dimgap" 1)
(setvar "dimjust" 0)
(command "dimsd1" "off")
(command "dimse1" "off")
(setvar "dimtad" 1)
(setvar "dimasz" 3)
;;;    (setvar "dimanno" 1) ;annotative måttsättning
(setvar "dimblk" "Oblique")
(setvar "dimblk1" "Oblique")
(setvar "dimblk2" "Oblique")
    ;(setvar "dimclrd" 4)
(setvar "dimclrt" 1)
(setvar "dimdle" 2)
)
(defun PilDim ()
(setvar "dimgap" 1)
;;;    (setvar "dimanno" 1) ;annotative måttsättning
(setvar "dimjust" 2)
(setvar "dimtad" 2)
(setvar "dimasz" 3)
(setvar "dimblk1" "None")
(setvar "dimblk2" "Open90")
(setvar "dimldrblk" "None")
(setvar "dimclrt" 1)
    ;(setvar "dimclrd" 1)
(command "dimsah" "ON")
(command "dimsd1" "ON")
(command "dimsd2" "OFF")
(command "dimsoxd" "OFF")
(command "dimse1" "ON")
(command "dimse2" "OFF")
(setvar "dimdle" 0)
)
;;
 
这是AIX\u Dim。lsp那个尺寸。。我在这里所做的更改只是,我根据比例进行放大:(setvar“dimscale”1)
 
(defun C:AIX:DIM1 (/ cDim oldlay)
(setq oldlay (getvar "clayer"))
(vl-load-com)
(if (not (tblsearch "LAYER" "A-------D2-------A"))
         (command "-layer" "M" "A-------D2-------A" "C" "cyan" "A-------D2-------A" "")
         (setvar "clayer" "A-------D2-------A")
         ) ; end if
   (load "K:\\CAD\\AIX-meny-2008\\Lisp\\Dim\\AIX_DimVariabler.lsp")
   (Dim_Variabler)
   (LinjerDim)

(setvar "dimscale" 1)
(setq p1 (getpoint "\nVälj Första Punkten: "))
(setq p2 (getpoint p1 "\nVälj andra Punkten: "))
(setq p3 (getpoint p2 "\nAnge Placering: "))
(princ)
(and(vl-cmdf "_.dimlinear" p1 p2 p3)
   (setq cDim(vlax-ename->vla-object(entlast)))

   (vla-get-Measurement cDim))
(setvar "clayer" oldlay)
(princ)
); end
;;; Detalj_Måttsättning 1:5

(defun C:AIX:DIM5 (/ cDim oldlay)
(setq oldlay (getvar "clayer"))
(vl-load-com)
(if (not (tblsearch "LAYER" "A-------D2-------B"))
         (command "-layer" "M" "A-------D2-------B" "C" "cyan" "A-------D2-------B" "")
         (setvar "clayer" "A-------D2-------B")
         ) ; end if
(load "K:\\CAD\\AIX-meny-2008\\Lisp\\Dim\\AIX_DimVariabler.lsp")
   (Dim_Variabler)
   (LinjerDim)

(setvar "dimscale" 5)
(setq p1 (getpoint "\nVälj Första Punkten: "))
(setq p2 (getpoint p1 "\nVälj andra Punkten: "))
(setq p3 (getpoint p2 "\nAnge Placering: "))
(princ)
(and(vl-cmdf "_.dimlinear" p1 p2 p3)
   (setq cDim(vlax-ename->vla-object(entlast)))

   (vla-get-Measurement cDim))
(setvar "clayer" oldlay)
(princ)
); end


;;; Detalj_Måttsättning 1:10

(defun C:AIX:DIM10 (/ cDim oldlay)
(setq oldlay (getvar "clayer"))
(vl-load-com)
(if (not (tblsearch "LAYER" "A-------D2-------C"))
         (command "-layer" "M" "A-------D2-------C" "C" "cyan" "A-------D2-------C" "")
         (setvar "clayer" "A-------D2-------C")
         ) ; end if
(load "K:\\CAD\\AIX-meny-2008\\Lisp\\Dim\\AIX_DimVariabler.lsp")
   (Dim_Variabler)
   (LinjerDim)

(setvar "dimscale" 10)
(setq p1 (getpoint "\nVälj Första Punkten: "))
(setq p2 (getpoint p1 "\nVälj andra Punkten: "))
(setq p3 (getpoint p2 "\nAnge Placering: "))
(princ)
(and(vl-cmdf "_.dimlinear" p1 p2 p3)
   (setq cDim(vlax-ename->vla-object(entlast)))

   (vla-get-Measurement cDim))
(setvar "clayer" oldlay)
(princ)
); end

;;; Det_Måttsättning 1:20

(defun C:AIX:DIM20 (/ cDim oldlay)
(setq oldlay (getvar "clayer"))
(vl-load-com)
(if (not (tblsearch "LAYER" "A-------D2-------D"))
         (command "-layer" "M" "A-------D2-------D" "C" "cyan" "A-------D2-------D" "")
         (setvar "clayer" "A-------D2-------D")
         ) ; end if
(load "K:\\CAD\\AIX-meny-2008\\Lisp\\Dim\\AIX_DimVariabler.lsp")
   (Dim_Variabler)
   (LinjerDim)

(setvar "dimscale" 20)
(setq p1 (getpoint "\nVälj Första Punkten: "))
(setq p2 (getpoint p1 "\nVälj andra Punkten: "))
(setq p3 (getpoint p2 "\nAnge Placering: "))
(princ)
(and(vl-cmdf "_.dimlinear" p1 p2 p3)
   (setq cDim(vlax-ename->vla-object(entlast)))

   (vla-get-Measurement cDim))
(setvar "clayer" oldlay)
(princ)
); end

(defun C:AIX:DIMPIL100 (/ cDim oldlay)
(setq oldlay (getvar "clayer"))
(vl-load-com)
(if (not (tblsearch "LAYER" "A-------Z1-------F"))
         (command "-layer" "M" "A-------Z1-------F" "C" "cyan" "A-------Z1-------F" "")
         (setvar "clayer" "A-------Z1-------F")
         ) ; end if
(load "K:\\CAD\\AIX-meny-2008\\Lisp\\Dim\\AIX_DimVariabler.lsp")
   (Dim_Variabler)
   (PilDim)

(setvar "dimscale" 100)
(setq p1 (getpoint "\nVälj Första Punkten: "))
(setq p2 (getpoint p1 "\nVälj andra Punkten: "))
(setq p3 (getpoint p2 "\nAnge Placering: "))
(princ)
(and(vl-cmdf "_.dimlinear" p1 p2 p3)
   (setq cDim(vlax-ename->vla-object(entlast)))

   (vla-get-Measurement cDim))
(setvar "clayer" oldlay)
(princ)
); end

uddfl 发表于 2022-7-6 16:01:40

您的例程允许将选定图元的图层、DimStyle和文字样式设置为当前。不错,但我们讨论的是(如果我错了,请纠正我)类似“Matchprop”的函数,它将获取源DimStyle的变量值,并将其应用于不同比例的目标DimStyle。可能类似于“检查标准”,但简化了。 
我肯定这已经完成了,我只是还没有找到。

wizman 发表于 2022-7-6 16:10:34

看看特里先生的dm。lsp:
 
http://web2.airmail.net/terrycad/AutoLISP-Code.htm

uddfl 发表于 2022-7-6 16:13:59

谢谢你的链接,好先生。 
DM。lsp实际上修改的是选定的维度实体,而不是它们的DimStyle(表对象),但可以根据需要应用此代码的概念。
页: [1]
查看完整版本: 拾取尺寸以设置dimst