我想要一个 AutoLISP 例程,它可以使用我的自定义设置自动创建新的尺寸样式。我知道可以将尺寸样式从一张图纸复制到另一张图纸,但每次都必须这样做,既乏味又耗时。
我已经编译了我最常用的样式所需的变量列表,但理想情况下我希望能够从该列表中添加或删除变量。
手动执行此操作的过程是在命令行中设置每个变量,然后使用“-DIMSTYLE SAVE”命令以自定义名称保存它。我尝试自己解决这个项目,但由于在 AutoLISP 方面相对缺乏经验,我很快意识到我不太具备正确完成此任务的知识。
以下是对我创建大多数新样式至关重要的变量列表:
DIMALTD 4
DIMAPOST [null]
DIMALTF 1
DIMALTTD 4
DIMALTU 4
DIMADEC 1
DIMAZIN 0
DIMARCSYM 1
DIMBLK ClosedFilled
DIMBLK1 ClosedFilled
DIMBLK2 ClosedFilled
DIMASZ 1
DIMCEN 0
DIMCLRD 3
DIMDLE 0
DIMLTYPE BYBLOCK
DIMLWD -2
DIMDLI 4
DIMLTEX1 BYBLOCK
DIMLTEX2 BYBLOCK
DIMCLRE 3
DIMEXE 0.5
DIMLWE -2
DIMEXO 0.75
DIMFRAC 0
DIMJOGANG 45
DIMLDRBLK ClosedFilled
DIMLUNIT 5
DIMSCALE 1
DIMRND 0
DIMSAH Off
DIMCLRT 3
DIMTXT 1.5
DIMTIH On
DIMGAP 0.1
DIMTOH On
DIMTAD 0
DIMTXSTY Standard
DIMTM 0
DIMTP 0
DIMTFAC 1
DIMTZIN 0
DIMZIN 0
最佳答案
尝试使用以下代码:
(defun C:Test ( / *error* ThisDrawing dimstyles style )
(defun *error* ( msg / )
(if (not (null msg ) ) (progn (princ "\nC:Test:*error*: " ) (princ msg ) (princ "\n") ) )
)
(setvar "DIMALTD" 4 )
(setvar "DIMALTF" 1 )
(setvar "DIMBLK" "_DOTSMALL" ) ; more You can find for example here http://forums.augi.com/showthread.php?9852-Setting-DIMLDRBLK
(setvar "DIMLTYPE" "BYBLOCK" )
(setvar "DIMEXO" 0.75)
(setq ThisDrawing (vla-get-activedocument (vlax-get-acad-object) ) )
(setq dimstyles (vlax-get-property ThisDrawing 'DimStyles ) )
(setq style (vlax-invoke-method dimstyles 'Add "TestStyle" ) )
(vlax-invoke-method style 'CopyFrom ThisDrawing )
)
关于styles - 使用 AutoLISP 生成新的尺寸样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47835301/