dkkx3a 发表于 2022-7-6 10:48:29

LISP的BlockAtt

请帮我用LISP做,谢谢。
DCT\u TP。图纸

dkkx3a 发表于 2022-7-6 11:01:24

帮助我!!!

The Buzzard 发表于 2022-7-6 11:12:27

 
 
你被抢劫犯袭击了吗?
要我报警吗?
 
你知道对你来说做一点解释会有帮助。
你是想学习Lisp程序,还是要求它落在你的膝盖上。
虽然你说“请”,但似乎你希望它是为你写的。
你不要问你想知道什么。
人们自愿在这里工作。
对你来说,付出一些努力并不过分。
 
这是一个很好的开始:http://www.afralisp.net/index.php
 
以下是我的一个线程请求,与您想要的内容大致相同:http://www.cadtutor.net/forum/showthread.php?t=36793
 
这是一条很长的线,所以请继续阅读。

The Buzzard 发表于 2022-7-6 11:17:24

下面是一个代码,它使用一个属性生成左摆门块。
层是用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))

fixo 发表于 2022-7-6 11:28:06

 
您可以从最简单的方式开始:
 

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

The Buzzard 发表于 2022-7-6 11:34:43

非常非常好,谢谢你的帮助!!

dkkx3a 发表于 2022-7-6 11:40:53

 
你指的是哪种Lisp程序?

The Buzzard 发表于 2022-7-6 11:48:37

页: [1]
查看完整版本: LISP的BlockAtt