乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 27|回复: 4

[编程交流] getpoint和DXF

[复制链接]

78

主题

207

帖子

129

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
395
发表于 2022-7-6 11:42:42 | 显示全部楼层 |阅读模式
您好。我将继续学习如何通过DXF代码创建/修改实体。我试图编写一个lisp,根据用户输入创建一个以其中心为中心的圆。这是我第一次尝试的
 
 
  1. (defun C:UA ()
  2. (setq CPT (getpoint "\nSpecify insertion point: "))
  3. (entmake '((0 . "CIRCLE") (8 . "TEST") ([color=Red]10 CPT)[/color] (40 0.375)))
  4. )

 
第10组出现DXF错误。我最初认为可能是因为CPT会返回带括号的(x y z),而组应该是(10 x y z)而不是(10(x y z)),所以接下来我尝试了
 
  1. (defun C:UA ()
  2. (setq CPT (getpoint "\nSpecify insertion point: "))
  3. (entmake '((0 . "CIRCLE") (8 . "TEST") (10 (car CPT) (cdr CPT) (cddr CPT)) (40 0.375)))
  4. )

 
我还是有同样的问题。我错过了什么?
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-6 12:10:57 | 显示全部楼层
由于并非所有数据都是文字,因此不能使用带引号的列表。尝试:
 
(entmake(list’(0。“CIRCLE”)'(8。“TEST”)(cons 10 CPT)'(40 0.375)))
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:22:49 | 显示全部楼层
 
您不需要使用car,getpoint返回x、y和z值。
要在列表中使用变量,需要使用cons。
 
  1. (defun C:UA (/ CPT)
  2. (setq CPT (getpoint "\nSpecify insertion point: "))
  3. (entmake
  4.    (list
  5.      (cons 0 "CIRCLE")
  6.      (cons 8 "TEST")
  7.      (cons 10 CPT)
  8.      (cons 40 0.375)
  9.    )
  10. )
  11. (princ))

 
 
 
当你决定去那里的时候,会额外增加一点:
 
设置图层和线型默认值。
创建线型定义HIDDEN2。
(注意:如果使用的是连续线型,则不需要线型定义。)
创建一个名为CIRCLE的层。
图层颜色为红色。
线型HIDDEN2。
线宽25mm。
获取半径和中心点。
把圆圈放在图层上。
 
  1. (defun C:UA2 (/ CPT RAD LNAM LTYP LWGT LCLR)                         ;Define function, Declare local variables
  2. (setq LNAM "CIRCLE"                                               ;Set layer name
  3.        LCLR  1                                                     ;Set layer color
  4.        LTYP  "HIDDEN2"                                             ;Set linetype
  5.        LWGT  25)                                                   ;Set lineweight
  6. (or (tblsearch "ltype" "HIDDEN2")                                 ;Search drawing for linetype
  7.    (entmake                                                        ;Entity make
  8.      (list                                                         ;Start list
  9.        (cons   0 "LTYPE")                                          ;Entity type
  10.        (cons 100 "AcDbSymbolTableRecord")                          ;Subclass marker
  11.        (cons 100 "AcDbLinetypeTableRecord")                        ;Subclass marker
  12.        (cons   2 "HIDDEN2")                                        ;Linetype name
  13.        (cons  70  0)                                               ;Standard flag values (bit-coded values)
  14.        (cons   3 "Hidden2 (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ");Linetype description
  15.        (cons  72  65)                                              ;Alignment code; value is always 65, the ASCII code for A
  16.        (cons  73  2)                                               ;The number of linetype elements
  17.        (cons  40  0.1875)                                          ;Total pattern length
  18.        (cons  49  0.125)                                           ;Dash, dot or space length (one entry per element)
  19.        (cons  74  0)                                               ;Complex linetype element type (one per element). Default is 0 (no embedded shape/text)
  20.        (cons  49 -0.0625)                                          ;Dash, dot or space length (one entry per element)
  21.        (cons  74  0)                                               ;Complex linetype element type (one per element). Default is 0 (no embedded shape/text)
  22.      )                                                             ;End list
  23.    )                                                               ;End entity make
  24. )                                                                 ;End or
  25. (if (null (tblsearch "layer" LNAM))                               ;Search drawing for layer name
  26.    (entmake                                                        ;Entity make
  27.      (list                                                         ;Start list
  28.        (cons 0   "LAYER")                                          ;Entity type
  29.        (cons 100 "AcDbSymbolTableRecord")                          ;Subclass marker
  30.        (cons 100 "AcDbLayerTableRecord")                           ;Subclass marker
  31.        (cons 2    LNAM)                                            ;Layer Name
  32.        (cons 6    LTYP)                                            ;Linetype
  33.        (cons 62   LCLR)                                            ;Layer color
  34.        (cons 70   0)                                               ;Layer state
  35.        (cons 290  1)                                               ;Plotting flag
  36.        (cons 370  LWGT)                                            ;Set lineweight
  37.      )                                                             ;End list
  38.    )                                                               ;End entity make
  39. )                                                                 ;End if
  40. (setq RAD (getreal   "\nSpecify radius: ")                        ;Get Radius
  41.        CPT (getpoint "\nSpecify circle center point: "))           ;Get center point
  42. (entmake                                                          ;Entity Make
  43.    (list                                                           ;Start list
  44.      (cons   0 "CIRCLE")                                           ;Entity type
  45.      (cons 100 "AcDbEntity")                                       ;Subclass marker                           
  46.      (cons 410 "Model")                                            ;Model Space
  47.      (cons   8  LNAM)                                              ;Layer
  48.      (cons 100 "AcDbCircle")                                       ;Subclass marker
  49.      (cons  10  CPT)                                               ;Center point
  50.      (cons  40  RAD)                                               ;Radius
  51.    )                                                               ;End list
  52. )                                                                 ;End Entity make
  53. (princ))                                                          ;Exit quietly
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:32:25 | 显示全部楼层
从Acad开发者帮助:
 
cons功能
 
将元素添加到列表的开头,或构造虚线列表
(cons新的第一元素列表或原子)
 
论据
 
新的第一个元素
要添加到列表开头的元素。该元素可以是原子或列表。
 
列表或原子
列表或原子。
 
返回值
 
返回的值取决于列表或原子的数据类型。如果list或atom是一个列表,则cons返回该列表,并将新的第一个元素添加为列表中的第一项。如果list或atom是一个atom,则cons返回一个由新的第一个元素和list或atom组成的点对。
 
 
示例
命令:(cons“a”(b c d))
(A B C D)
命令:(cons’(a)'(b c d))
((A)B C D)
命令:(cons’a 2)
(A.2)
 
下面是一个关于实体生成块的有趣线程,展示了cons的使用。
 
http://www.cadtutor.net/forum/showthread.php?t=36793&highlight=entmake+方块
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:56:15 | 显示全部楼层
嗨,吉他小子,
 
您的问题可能已经得到了回答,但这绝对值得以后阅读:
 
http://www.cadtutor.net/forum/showpost.php?p=258390&postcount=20
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-3 15:19 , Processed in 0.587451 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表