2017-12-15 68 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) 

) 
関連する問題