LISP的BlockAtt
请帮我用LISP做,谢谢。DCT\u TP。图纸 帮助我!!!
你被抢劫犯袭击了吗?
要我报警吗?
你知道对你来说做一点解释会有帮助。
你是想学习Lisp程序,还是要求它落在你的膝盖上。
虽然你说“请”,但似乎你希望它是为你写的。
你不要问你想知道什么。
人们自愿在这里工作。
对你来说,付出一些努力并不过分。
这是一个很好的开始:http://www.afralisp.net/index.php
以下是我的一个线程请求,与您想要的内容大致相同:http://www.cadtutor.net/forum/showthread.php?t=36793
这是一条很长的线,所以请继续阅读。 下面是一个代码,它使用一个属性生成左摆门块。
层是用Entmake创建的,字体样式也是用Entmake创建的,块是用Entmake制作的。
这将使您了解需要为代码做什么。
我可以写你的代码吗?对
我会写你的代码吗?不
你必须这么做。
如果你问一些你不懂的问题,我很乐意回答。
注意:可以参考AutoCAD的“开发人员帮助”部分来查找此处使用的函数。另请查看DXF参考。您将在这段代码中找到所有内容的解释。学习过程的一部分是做研究。
开始工作。
(defun C:LD (/ INPT AFAP AFAP01 ASAP ASAP01 BNAM INPT EXDR ASTY AWID ASIZ TLNAM WID THK
PT01 PT02 PT03 PT04 SANG EANG BRPT)
(setq ASTY"Romans")
(LD_FS ASTY)
(setq AWID 1.0)
(setq ASIZ 4.5)
(setq TLNAM "A-DOOR-IDEN")
(setq DLNAM "A-DOOR-FULL")
(setq BNAM"LDR")
(setq BRPT (list 0.0 0.0 0.0))
(setq EXDR (list 0.0 0.0 1.0))
(setq WID 36.0)
(setq THK2.0)
(LD_ML TLNAM 2 "Continuous" 35)
(LD_ML DLNAM 3 "Continuous" 50)
(if (null (tblsearch "block" BNAM))(LD_BD))
(setq INPT (getpoint "\nGet insertion point:"))
(setq AFAP (polar INPT (DTR 270.0) 11.25))
(setq AFAP01 (polar AFAP (DTR 0.0) 15.0))
(setq ASAP (polar INPT (DTR 270.0) 6.75))
(setq ASAP01 (polar ASAP (DTR 0.0)(/ WID 2.0)))
(entmake
(list
(cons 0 "INSERT")
(cons 67 0)
(cons 410 "Model")
(cons 8 DLNAM)
(cons 66 1)
(cons 2 BNAM)
(cons 10 INPT)
(cons 41 1)
(cons 42 1)
(cons 50 0)
(cons 43 1)
(cons 70 0)
(cons 71 0)
(cons 44 0)
(cons 45 0)
(cons 210EXDR)
(cons 62 256)
(cons 39 0)
(cons 6 "BYLAYER")))
(entmake
(list
(cons 0 "attrib")
(cons 67 0)
(cons 410 "Model")
(cons 8 TLNAM)
(cons 10 AFAP01)
(cons 40 ASIZ)
(cons 1 "D01")
(cons 2 "ID")
(cons 70
(cons 73 0)
(cons 50 0.0)
(cons 41 AWID)
(cons 51 0.0)
(cons 7 ASTY)
(cons 71 0)
(cons 72 1)
(cons 11 ASAP01)
(cons 210EXDR)
(cons 74 2)))
(entmake
(list
(cons 0 "SEQEND")
(cons 8 "0")))
(prompt "\nRotation Angle: ")
(command "_.rotate" "last" "" INPT pause))
;Degrees to Radians
(defun DTR (a) (* pi (/ a 180.0)))
;Block Definition
(defun LD_BD ()
(setq PT01 (polar BRPT (DTR90.0) WID))
(setq PT02 (polar PT01 (DTR 0.0) THK))
(setq PT03 (polar PT02 (DTR 270.0) WID))
(setq PT04 (polar PT03 (DTR 180.0) THK))
(setq SANG 0.0)
(setq EANG 1.5708)
(setq AFAP (polar BRPT (DTR 270.0) 11.25))
(setq AFAP01 (polar AFAP (DTR 0.0) 15.0))
(setq ASAP (polar BRPT (DTR 270.0) 6.75))
(setq ASAP01 (polar ASAP (DTR 0.0)(/ WID 2.0)))
(entmake
(list
(cons 0 "block")
(cons 2 BNAM)
(cons 10 BRPT)
(cons 70 2)))
(entmake
(list
(cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 67 0)
(cons 410 "Model")
(cons 8 "0")
(cons 100 "AcDbPolyline")
(cons 90 4)
(cons 70 1)
(cons 43 0.0)
(cons 38 0.0)
(cons 39 0.0)
(cons 10 PT01)
(cons 40 0.0)
(cons 41 0.0)
(cons 42 0.0)
(cons 10 PT02)
(cons 40 0.0)
(cons 41 0.0)
(cons 42 0.0)
(cons 10 PT03)
(cons 40 0.0)
(cons 41 0.0)
(cons 42 0.0)
(cons 10 PT04)
(cons 40 0.0)
(cons 41 0.0)
(cons 42 0.0)
(cons 210EXDR)))
(entmake
(list
(cons 0 "arc")
(cons 100 "AcDbEntity")
(cons 67 0)
(cons 410 "Model")
(cons 8 "0")
(cons 100 "AcDbCircle")
(cons 10 BRPT)
(cons 39 0.0)
(cons 40 WID)
(cons 210EXDR)
(cons 100 "AcDbArc")
(cons 50 SANG)
(cons 51 EANG)))
(entmake
(list
(cons 0 "attdef")
(cons 67 0)
(cons 410 "Model")
(cons 8 TLNAM)
(cons 10 AFAP01)
(cons 40 ASIZ)
(cons 1 "D01")
(cons 3 "Door ID:")
(cons 2 "ID")
(cons 70
(cons 73 0)
(cons 50 0.0)
(cons 41 AWID)
(cons 51 0.0)
(cons 7 ASTY)
(cons 71 0)
(cons 72 1)
(cons 11 ASAP01)
(cons 210EXDR)
(cons 74 2)))
(entmake
(list
(cons 0 "endblk")
(cons 8 "0"))))
;Make Layer
(defun LD_ML (LNAM LCLR LTYP LWGT)
(if (null (tblsearch "layer" LNAM))
(entmake
(list
(cons 0 "LAYER")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")
(cons 2LNAM)
(cons700)
(cons62LCLR)
(cons 6LTYP)
(cons 2901)
(cons 370LWGT))))
(princ))
;Font Style
(defun LD_FS (ASTY)
(setq FSTY ASTY
TWF 1.0
TOA 0.0
PFN "romans.shx"
BFN "")
(if (null (tblsearch "style" FSTY))
(entmake
(list
(cons 0 "STYLE")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbTextStyleTableRecord")
(cons 2 FSTY)
(cons 70 0)
(cons 40 0)
(cons 41 TWF)
(cons 50 TOA)
(cons 3 PFN)
(cons 4 BFN))))
(princ))
您可以从最简单的方式开始:
(defun C:MBL (/ clr col sset)
(command "._zoom" "_w" "-1.0,-1.0" "5,3");<-- zoom to desired limits (optional)
(setq clr (getvar "CLAYER"));<--store current layer
(setq col (getvar "CECOLOR"));<--store current layer color
(setvar "CMDECHO" 0); <-- turn command echo off
(setvar "CLAYER" "0");<--set current layer "0"
(setvar "CECOLOR" "BYLAYER");<-- set color to bylayer
(setq sset (ssadd));<-- create empty selection set
(command "._line" "_non" "0,0" "_non" "1.8182,0" "")
(ssadd (entlast) sset);<--append newly created entity to selection set
(command "._pline" "_non" "1.2121,0" "_w" "0" ".2424" "_non" "1.2121,0.7576"
"_w" "0" "0" "_non" "1.2121,1.3636" "_non" "4.1818,1.3636" "")
(ssadd (entlast) sset);<--append newly created entity to selection set
(command "._-attdef" "_p" "" "LEVEL" "Level" "0.00" "_s" "DN_DCT"
"_j" "BL" "1.2121,1.3636" "1.0" "0")
(ssadd (entlast) sset);<--append newly created entity to selection set
(command "._-block" "myBlockName" "_non" "0,0" sset "");<-- change block name here
(command "._erase" sset "")
(setvar "CMDECHO" 1); <-- turn command echo on
(setvar "CLAYER" clr);<--restore current layer
(setvar "CECOLOR" col);<--restore current layer color
(princ)
)
(princ "\n>> Type MBL to cteate block<<")
(prin1)
BLK123-2。lsp此lisp提示输入属性值。
(defun C:BLK123 (/ BNAM BLKLNAM BRPT DSF INPT )
(FS_123 "DN_DCT")
(setq BLKLNAM "CTnhut")
(ML_123 BLKLNAM 7 "Continuous")
(setq BNAM"123")
(setq BRPT (list 0.0 0.0 0.0))
(or D::SF (setq D::SF 1))
(if (null (tblsearch "block" BNAM))(BD_123))
(setq D::SF (cond ((getint (strcat "\nSpecify block scale factor <"(itoa D::SF)">: ")))(T D::SF)))
(setq DSF D::SF)
(setq INPT (getpoint "\nInsertion point:"))
(command "._-layer" "_S" BLKLNAM "")
(command "._-insert" BNAM INPT DSF DSF pause)
(princ))
(princ "\nType BLK123 to start.")
;Block Definition
(defun BD_123 ()
(entmake
(list
(cons 0 "block")
(cons 2 BNAM)
(cons 10 BRPT)
(cons 70 2)))
(entmake
(list
(cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 67 0)
(cons 410 "Model")
(cons 8 "0")
(cons 62 7)
(cons 100 "AcDbPolyline")
(cons 90 6)
(cons 70 0)
(cons 38 0.0)
(cons 39 0.0)
(cons 10 (list 0.0 0.0))
(cons 40 0.0)
(cons 41 0.0)
(cons 42 0.0)
(cons 10 (list 1.81818 0.0))
(cons 40 0.0)
(cons 41 0.0)
(cons 42 0.0)
(cons 10 (list 1.21212 0.0))
(cons 40 0.0)
(cons 41 0.242424)
(cons 42 0.0)
(cons 10 (list 1.21212 0.757576))
(cons 40 0.0)
(cons 41 0.0)
(cons 42 0.0)
(cons 10 (list 1.21212 1.36364))
(cons 40 0.0)
(cons 41 0.0)
(cons 42 0.0)
(cons 10 (list 4.18182 1.36364))
(cons 40 0.0)
(cons 41 0.0)
(cons 42 0.0)
(cons 210(list 0.0 0.0 1.0))))
(entmake
(list
(cons 0 "ATTDEF")
(cons 100 "AcDbEntity")
(cons 67 0)
(cons 410 "Model")
(cons 8 BLKLNAM)
(cons 100 "AcDbText")
(cons 10(list 1.21212 1.61364 0.0))
(cons 40 1.0)
(cons 1 "0.00")
(cons 50 0.0)
(cons 41 1.0)
(cons 51 0.0)
(cons 7 "DN_DCT")
(cons 71 0)
(cons 72 0)
(cons 11(list 0.0 0.0 0.0))
(cons 210 (list 0.0 0.0 1.0))
(cons 100 "AcDbAttributeDefinition")
(cons 3 "Value:")
(cons 2 "VALUE")
(cons 70
(cons 73 0)
(cons 74 0)))
(entmake
(list
(cons 0 "endblk")
(cons 8 "0"))))
;Make Layer
(defun ML_123 (LNAM LCLR LTYP)
(if (null (tblsearch "layer" LNAM))
(entmake
(list
(cons 0 "LAYER")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")
(cons 2LNAM)
(cons700)
(cons62LCLR)
(cons 6LTYP)
(cons 2901))))
(princ))
;Font Style
(defun FS_123 (ASTY)
(setq FSTY ASTY
TWF 1.0
TOA 0.0
PFN "VNI-Helve-Condense.shx"
BFN "")
(if (null (tblsearch "style" FSTY))
(entmake
(list
(cons 0 "STYLE")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbTextStyleTableRecord")
(cons 2 FSTY)
(cons 70 0)
(cons 40 0)
(cons 41 TWF)
(cons 50 TOA)
(cons 3 PFN)
(cons 4 BFN))))
(princ)) 非常非常好,谢谢你的帮助!!
你指的是哪种Lisp程序?
页:
[1]