2017-12-15 79 views
1

커스텀 설정으로 새로운 디멘션 스타일을 자동으로 생성하는 AutoLISP 루틴을 원합니다. 한 도면에서 다른 도면으로 치수 스타일을 복사하는 것이 가능하다는 것을 알고 있지만 매번이 작업을 수행하는 것은 지루하고 시간이 오래 걸립니다.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 

답변

1

감사합니다, CAD 개발자 여기

나를 위해 대부분의 새로운 스타일을 만들기위한 중요 변수의 목록입니다. 그게 날 시작 했어. 다음은 사용을 종료 한 코드입니다. AutoCAD는 텍스트 값 변수가 마음에 들지 않아서 중요하지 않으므로 삭제했습니다.

;automatically create new dimension style 
(defun c:jeff() 
    (setvar "DIMALTD" 4) 
    (setvar "DIMALTF" 1) 
    (setvar "DIMALTTD" 4) 
    (setvar "DIMALTU" 4) 
    (setvar "DIMADEC" 1) 
    (setvar "DIMAZIN" 0) 
    (setvar "DIMARCSYM" 1) 
    (setvar "DIMASZ" 1) 
    (setvar "DIMCEN" 0) 
    (setvar "DIMCLRD" 3) 
    (setvar "DIMDLE" 0) 
    (setvar "DIMLWD" -2) 
    (setvar "DIMDLI" 4) 
    (setvar "DIMCLRE" 3) 
    (setvar "DIMEXE" 0.5) 
    (setvar "DIMLWE" -2) 
    (setvar "DIMEXO" 0.75) 
    (setvar "DIMFRAC" 0) 
    (setvar "DIMLUNIT" 5) 
    (setvar "DIMSCALE" 1) 
    (setvar "DIMRND" 0) 
    (setvar "DIMCLRT" 3) 
    (setvar "DIMTXT" 1.5) 
    (setvar "DIMGAP" 0.1) 
    (setvar "DIMTAD" 0) 
    (setvar "DIMTM" 0) 
    (setvar "DIMTP" 0) 
    (setvar "DIMTFAC" 1) 
    (setvar "DIMTZIN" 0) 
    (setvar "DIMZIN" 0) 

    (command "dimstyle" "s" "Jeff") 

    (princ) 
) 
1

에 한번이 코드를 재생 :

(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) 

)