lsp源碼
① 請問cad圖層轉換器lsp代碼是什麼
這個得是自己編寫的呦
② CAD 快速標注LSP代碼,大神幫忙整一個,感謝!
標注尺寸
autolisp代碼如下:
;標注尺寸
(defun c:tes ( / ent n1 n2 obj p1 p2 p3)
(vl-load-com)
(while (setq ent (x2007101))
(setq obj (vlax-ename->vla-object ent))
(vla-getboundingbox obj 'p1 'p2)
(setq p1 (vlax-safearray->list p1) p2 (vlax-safearray->list p2) p3 (mapcar '- p2 p1) n1 (rtos (car p3) 2 2) n2 (rtos (cadr p3) 2 2))
(setq p3 (mapcar '+ '(-5 0) p1))
(entmake (list '(0 . "DIMENSION") '(100 . "AcDbEntity") '(100 . "AcDbDimension") (cons 10 p1) '(70 . 38) (cons 1 "0") '(71 . 5) '(72 . 1)
'(73 . 0) '(74 . 0) '(75 . 0) '(52 . 0.0) '(53 . 0.0) '(54 . 0.0) '(51 . 0.0)
'(100 . "AcDbOrdinateDimension") (cons 13 p1) (cons 14 p3)))
(setq p3 (mapcar '+ '(0 -5) p1))
(entmake (list '(0 . "DIMENSION") '(100 . "AcDbEntity") '(100 . "AcDbDimension") (cons 10 p1) '(70 . 102) (cons 1 "0") '(71 . 5) '(72 . 1)
'(73 . 0) '(74 . 0) '(75 . 0) '(52 . 0.0) '(53 . 0.0) '(54 . 0.0) '(51 . 0.0)
'(100 . "AcDbOrdinateDimension") (cons 13 p1) (cons 14 p3)))
(setq p3 (mapcar '+ '(5 0) p2))
(entmake (list '(0 . "DIMENSION") '(100 . "AcDbEntity") '(100 . "AcDbDimension") (cons 10 p1) '(70 . 38) (cons 1 n1) '(71 . 5) '(72 . 1)
'(73 . 0) '(74 . 0) '(75 . 0) '(52 . 0.0) '(53 . 0.0) '(54 . 0.0) '(51 . 0.0)
'(100 . "AcDbOrdinateDimension") (cons 13 p2) (cons 14 p3)))
(setq p3 (mapcar '+ '(0 5) p2))
(entmake (list '(0 . "DIMENSION") '(100 . "AcDbEntity") '(100 . "AcDbDimension") (cons 10 p1) '(70 . 102) (cons 1 n2) '(71 . 5) '(72 . 1)
'(73 . 0) '(74 . 0) '(75 . 0) '(52 . 0.0) '(53 . 0.0) '(54 . 0.0) '(51 . 0.0)
'(100 . "AcDbOrdinateDimension") (cons 13 p2) (cons 14 p3)))
)
(princ)
)
(defun x2007101 ( / ent)
(if (setq ent (entsel "\n請選擇零件"))
(progn
(setq ent (car ent))
(if (vl-catch-all-error-p (vl-catch-all-apply 'vlax-curve-getStartPoint (list ent)))
nil
ent
)
)
nil
)
)
③ 求autocad 自動編號的LSP代碼
(defun c:bh (/ oce1 qz gg n1 zn h1 sxh1 p1)
(setq oce1 (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "style" "standard" "" 0 0.8 0 "n" "n")
(setq qz (getstring "\n請輸入前綴相同的部分:(不要前綴回車) ") gg (getstring "\n請輸入後綴相同的部分:(不要後綴回車) "))
(if (not (setq n1 (getint "\n請輸入起始順序號 <1>: ")))
(setq n1 1)
)
(if (not (setq zn (getint "\n請輸入增加或減少的序數 <+1>: ")))
(setq zn 1)
)
(if (not (setq h1 (getreal "\n請指定文字高度 <2.5>: ")))
(setq h1 2.5)
)
(setq sxh1 (strcat qz (itoa n1) gg) p1 (getpoint "\n請指定起點: ")
)
(while (/= p1 nil)
(command "text" "tl" p1 h1 0 sxh1) ;應是左上tl 不是右上tr
(setq n1 (+ n1 zn) sxh1 (strcat qz (itoa n1) gg) p1 (getpoint p1 "\n請指定下一起點: "))
)
(setvar "cmdecho" oce1)
(princ)
)
④ 南方cass中怎樣使用kg.lsp.lsp應用程序源代碼
南方cass使用kg,lsp,dvb,vlx等這些外部程序需要通過載入後,才能運行的。具體方法是:打開南方cass軟體,輸入命令appload(載入命令)回車,會彈出如下對話框:
最後注意:每次關閉了繪圖軟體後再重新打開需要重新載入的。。。
⑤ CAD lsp代碼怎麼寫這個命令,用過,但沒代碼,求指導
框選對象圖層L1
分析每個對象的坐標包圍框,代碼
(vl-load-com);載入VBA函數
(setq obj (vlax-ename->vla-object ent)) ;obj對象
(vla-GetBoundingBox obj '&p1 '&p2) ;得到包圍框
(setq &p1 (vlax-safearray->list &p1));得到右下角坐標
(setq &p2 (vlax-safearray->list &p2));得到左上角坐標
建立右下角點坐標集合ss,元素由點與對象構成(list &p1 &p2 ent)
(setq ss(vl-sort ss (function (lambda (x y) (< (caar x) (caar y))))));;X從小到大排序
提取SS裡面的對象提取多段線坐標
(setq ss1(mapcar 'cdr (vl-remove-if '(lambda (X) (/= 10 (car x))) (entget ent))))
(setq &kw1 (ssget "wp" ss1));提取這個范圍的對象,然後移動對象到你需要的地方
或(setq &kw1 (ssget "w" &p1 &p2));這樣選擇對象也可以
移動對象&kw1按距離來移動。
左下角的坐標可以這樣得到取得
(setq x1 (car &p2))
(setq y1 (cadr &p1))
(setq &p3 (list x1 y1));左下角坐標
你的代碼主要是沒有包圍框代碼有了代碼就可以方便的寫出你的程序了。
lisp程序不需要編譯,直接在autocad中載入就可以了,然後執行定義的命令就行。
⑦ 怎樣批量修改多個CAD圖中的點樣式LSP源代碼怎樣批量修改多個CAD圖指定層(如JZD層)的文字顏色為白色
1. 創建CHSCR命令文件
CH.SCR文件的內容是由AutoCAD的命令和響應序列所組成的ASCⅡ文件,是可在AotuCAD編輯狀態下執行的文本文件。
CH.SCR包含了可在指定圖形中自動重復執行命令序列。
例:把圖形文件C800-01~ C800-98中的圖紙編號2066DD3改變2087DD2。高層代號C13改為D24,設備型號DZ20改為C45AD。
在DOS狀態下用文本編輯軟體建立CH.SCR文件:
CHTEXT_all _ _2066DD3
2087DD2
CHTEXT_all _ _C13
D24〈Enter〉
CHTEXT _all _ _DZ20
C45AD〈Enter〉
PLOT〈Enter〉
〈Enter〉
〈Enter〉
其中:
_代表一個空格
〈Enter〉代表回車
CHTEXT修改圖中文字的LISP程序
•AotoCAD中文字修改功能較弱,AutoCADR12.0中曾加了DDEDIT修改文字命令,但只能用滑鼠器手工修改,且一次只能改一個字元串不適用程序化操作。
因此,在編寫SCR命令文件時我們採用了修改圖中文字的LISP程序CHTEXT.LSP(其清單附後)。將其裝入ACAD.LSP後,只要鍵入CHTEXT,就可按漢字提示使用,它一次可以修改多個字元串。
•當編寫命令文件時,必須考慮每條AutoCAD命令中的所有響應和提示。命令文件中的每個空格都是有意義的,因為AotuCAD將它看作回車,所以不能隨意增減。
•如果不需要輸出PLT繪圖文件,PLOT後面四行可以不要。
•CHSCR有兩個作用:
①如果需要修改的圖形文件較少,可以在ACAD中通過SCRLPT命令直接調用CH.SCR。
②可以在ACAD中通過SCRIPT命令試運行一次,看是否有錯。
在ACAD命令狀態下,鍵入以下命令即可按CH.SCR文件要求,對當前圖形完成所需的修改。
Command:script
Script file:ch
當所涉及的圖形文件較多時(十幾個以上),採用手動操作,將每一圖形文件調出來,逐一修改,效率太低。因此建議採用以下步驟,使計算機按命令自動批量修改圖形文件。
2. 建立圖形文件表FILE.TAB
創建完CH.SCR後,下一步應把需要修改圖形文件名(.DWG)存入FILE.TAB中:
例如:
C800-01
C800-02
C800-03
C800-98
3. 編譯生成CHGE.SCR文件
當具備CH.SCR(試運行正常後)和FILE.TAB文件後,就可以進行編譯工作,在DOS狀態下鍵入CHSCR〈Enter〉即開始編譯,若編譯出現問題,系統會給出相應的提示,編譯完成後,你會發現目錄中多了一個CHGE.SCR文件(自動修改圖形的文本文件)。
•CHSCR.EXE:其功能是配製SCR文件格式的命令字元串並調入相關的繪圖參數(源程序用C語言編寫,清單附後)。
•當ACAD輸出PLT文件時,如果發現有對應圖形的PLT文件,將提示出是否覆蓋掉它,這將引起SCRIPT命令中斷運行。為此在CHSCR.EXE中,我們是這么處理的:當程序發現有相應圖形的PLT文件,將自動把它刪除掉,並在屏幕上顯示出對應的信息。
經CHSCR.EXE所生成的CHGE.SCR文件:
open y C800-01
CHTEXT all 2066DD3
2087DD2
CHTEXT all C13
D24
CHTEXT all DZ20
C45AD
PLOT
save
open y C900-98
CHTEXT all 2066DD3
2087DD2
CHTEXT all C13
D24
CHTEXT all DZ20
C45AD
PLOT
save
quit y
4. 執行SCRIPT命令
①在ACAD中通過SCRIPT命令直接調用CHGE.SCR:
Command:script chge
②啟動AutoCAD時從操作系統提示符處輸入以下正文:
C:acad script chge
三、程序的安裝
1. 將CHTEXT.LSP裝入ACAD.LSP中。
2. 用通用C++編譯器將CHSCR.C編譯成可執行程序CHSCR.EXE,將其拷貝到CAD可找到的目錄下。
程序CHSCR.EXE適用於AutoCAD R11.0、R12.0。