乐筑天下

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

[编程交流] 在Ca中输入数据需要Lisp

[复制链接]

8

主题

38

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 14:54:20 | 显示全部楼层 |阅读模式
大家好
在CAD中输入数据需要LISP
我有一个地平面
样品
x y z
17 20 2.5
21 24 3.4
25 28 4.3
29 32 5.2
33 36 2.5
37 40 3.4
关于绘图,我有x,y和z坐标,我必须在autocad中绘图
但在显示点和文本上绘制z值是一个块
之后,当我勾选列表时,它在相同的x,y和z坐标上。
 
请参考附件样本:)
 
谢谢
 
哈什哈德:)
样本。pdf
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 15:00:07 | 显示全部楼层
试试这个
 
  1. ;; local defun
  2. ;; entmake block
  3. (defun makepoint  ()
  4. (if (not (tblsearch "BLOCK" "POINT_ELEV"))
  5.    (progn
  6.      (initget 6)
  7.      (setq hgt (getreal "\n  Enter text height of attribute <2.5>: "))
  8.      (if (not hgt)
  9. (setq hgt 2.5))
  10.      (entmake
  11. (mapcar        'cons
  12.         (list 0 8 2 70 10 3)
  13.         (list "BLOCK" "0" "POINT_ELEV" 2 '(0 0 0) "POINT_ELEV")))
  14.      (entmake
  15. (mapcar        'cons
  16.         (list 0 8 62 10 210 50)
  17.         (list "POINT" "0" 0 (list 0 0 0) '(0 0 1) 0.0)))
  18.      (entmake
  19. (mapcar        'cons
  20.         (list 0 8 62 10 40 70 1 210 3 2)
  21.         (list "ATTDEF"
  22.               "0"
  23.               0
  24.               (list (/ hgt 2) (* hgt 2.5) 0)
  25.               2.5
  26.               9
  27.               "x"
  28.               '(0 0 1)
  29.               "Topo point X coordinate"
  30.               "XCOORD")))
  31.      (entmake
  32. (mapcar        'cons
  33.         (list 0 8 62 10 40 70 1 210 3 2)
  34.         (list "ATTDEF"
  35.               "0"
  36.               0
  37.               (list (/ hgt 2) (* hgt 1.5) 0)
  38.               2.5
  39.               9
  40.               "y"
  41.               '(0 0 1)
  42.               "Topo point Y coordinate"
  43.               "YCOORD")))
  44.      (entmake
  45. (mapcar        'cons
  46.         (list 0 8 62 10 40 70 1 210 3 2)
  47.         (list "ATTDEF"
  48.               "0"
  49.               6
  50.               (list (/ hgt 2) (/ hgt 2) 0)
  51.               2.5
  52.               8
  53.               "z"
  54.               '(0 0 1)
  55.               "Topo point Z coordinate"
  56.               "ZCOORD")))
  57.      (entmake
  58. (mapcar        'cons
  59.         (list 0
  60.         (list "ENDBLK" "0"))))))
  61. ;; main programm
  62. (defun C:PP  (/ att_tag ent new_value next next_data osm point_list)
  63. (makepoint)
  64. (if (not (tblsearch "BLOCK" "POINT_ELEV"))
  65.    (progn
  66.      (alert "Something wrong\nprogramm stopped")
  67.      (exit)
  68.      (princ)))
  69. (setq osm (getvar "osmode"))
  70. (setvar "cmdecho" 0)
  71. (setvar "osmode" 0)
  72. (setq        point_list
  73. (list
  74.    '(17 20 2.5)        '(21 24 3.4) '(25 28 4.3) '(29 32 5.2) '(33 36 2.5) '(37 40 3.4)))
  75. (foreach point  point_list
  76.    (command "._-insert" "POINT_ELEV" point 1 1 0)
  77.    (setq ent (entlast))
  78.    (setq next ent)
  79.    (while (setq next (entnext next))
  80.      (setq next_data (entget next))
  81.      (setq att_tag (cdr (assoc 2 next_data)))
  82.      (cond
  83. ((eq (strcase "XCOORD") att_tag)
  84. (setq new_value (rtos (car point) 2 1)))
  85. ((eq (strcase "YCOORD") att_tag)
  86. (setq new_value (rtos (cadr point) 2 1)))
  87. ((eq (strcase "ZCOORD") att_tag)
  88. (setq new_value (rtos (caddr point) 2 1))))
  89.      (entmod
  90. (subst (cons 1 new_value) (assoc 1 next_data) next_data))
  91.      (entupd ent)
  92.      )
  93.    )
  94. (command "._zoom" "_e");by suit
  95. (setvar "osmode" osm)
  96. (setvar "cmdecho" 1)
  97. (princ)
  98. )
  99. ;; TesT : (C:PP)
  100. (prompt "\n====================================\n")
  101. (prompt "\n\t>>>\tType PP to execute ... \t>>>\n")
  102. (prompt "\n====================================\n")
  103. (prin1)

 
~'J'~
回复

使用道具 举报

8

主题

38

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 15:04:00 | 显示全部楼层
谢谢,胖子,但我有很多地面
我发给你的是一个样本,我有一万多个
x、 是的,我们尽全力吧
 
谢谢
 
 
哈沙德
回复

使用道具 举报

1

主题

64

帖子

69

银币

初来乍到

Rank: 1

铜币
2
发表于 2022-7-6 15:06:15 | 显示全部楼层
您有XYZ坐标的文件吗?文件的“空格”是否被分隔?
回复

使用道具 举报

8

主题

38

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 15:09:58 | 显示全部楼层
我希望你知道地面的改进
从网站上我得到了x,y,z数据,我想把它导入cad
但我想展示的是z值,这就是我们的全部目标
机密,如果任何idia将制作该x、y、z点的脚本或lisp
一次完成这个输入
感谢您的回复
 
 
哈沙德
回复

使用道具 举报

8

主题

38

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 15:11:17 | 显示全部楼层
查看此示例
心形。exel文件
 
谢谢
哈萨德
样本。拉链
回复

使用道具 举报

1

主题

64

帖子

69

银币

初来乍到

Rank: 1

铜币
2
发表于 2022-7-6 15:14:26 | 显示全部楼层
你明白了,我以前从未使用过excell文件。但是这里有很多关于它的线索。搜索并找到答案。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 15:20:44 | 显示全部楼层
 
继续关注此线程
 
~'J'~
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 15:23:20 | 显示全部楼层
看看它将如何为你工作
 
  1. ;; PP.lsp
  2. ;; read Excel, draw points in Acad as blocks with attributes
  3. ;; local defun
  4. ;; entmake block
  5. (defun makepoint  ()
  6. (if (not (tblsearch "BLOCK" "POINT_ELEV"))
  7.    (progn
  8.      (initget 6)
  9.      (setq hgt (getreal "\n  Enter text height of attribute <2.5>: "))
  10.      (if (not hgt)
  11. (setq hgt 2.5))
  12.      (entmake
  13. (mapcar        'cons
  14.         (list 0 8 2 70 10 3)
  15.         (list "BLOCK" "0" "POINT_ELEV" 2 '(0 0 0) "POINT_ELEV")))
  16.      (entmake
  17. (mapcar        'cons
  18.         (list 0 8 62 10 210 50)
  19.         (list "POINT" "0" 0 (list 0 0 0) '(0 0 1) 0.0)))
  20.      (entmake
  21. (mapcar        'cons
  22.         (list 0 8 62 10 40 70 1 210 3 2)
  23.         (list "ATTDEF"
  24.               "0"
  25.               0
  26.               (list (/ hgt 2) (* hgt 2.5) 0)
  27.               2.5
  28.               9
  29.               "x"
  30.               '(0 0 1)
  31.               "Topo point X coordinate"
  32.               "XCOORD")))
  33.      (entmake
  34. (mapcar        'cons
  35.         (list 0 8 62 10 40 70 1 210 3 2)
  36.         (list "ATTDEF"
  37.               "0"
  38.               0
  39.               (list (/ hgt 2) (* hgt 1.5) 0)
  40.               2.5
  41.               9
  42.               "y"
  43.               '(0 0 1)
  44.               "Topo point Y coordinate"
  45.               "YCOORD")))
  46.      (entmake
  47. (mapcar        'cons
  48.         (list 0 8 62 10 40 70 1 210 3 2)
  49.         (list "ATTDEF"
  50.               "0"
  51.               6
  52.               (list (/ hgt 2) (/ hgt 2) 0)
  53.               2.5
  54.               8
  55.               "z"
  56.               '(0 0 1)
  57.               "Topo point Z coordinate"
  58.               "ZCOORD")))
  59.      (entmake
  60. (mapcar        'cons
  61.         (list 0
  62.         (list "ENDBLK" "0"))))))
  63. ;; local defun
  64. ;; to read the Excel range
  65. (defun EXR  (FilePath ShtNum StrRange /        ExcelApp ExcData Sht UsdRange Wbk)
  66. ;; based on function "EXD" from this page:
  67. ;; http://www.cadforyou.spb.ru/index.php?current_section=section_functions_page
  68. (vl-load-com)
  69. (setq ExcelApp (vlax-get-or-create-object "Excel.Application"))
  70. (vla-put-visible ExcelApp :vlax-true)                  ; or :vlax-false if you want
  71. (vlax-put-property ExcelApp 'DisplayAlerts :vlax-false)
  72. (setq        Wbk (vl-catch-all-apply
  73.       'vla-open
  74.       (list (vlax-get-property ExcelApp "WorkBooks") FilePath)
  75.       )
  76. )
  77. (setq        Sht (vl-catch-all-apply
  78.       'vlax-get-property
  79.       (list (vlax-get-property Wbk "Sheets")
  80.             "Item"
  81.             ShtNum
  82.             )
  83.       )
  84. )
  85. (vlax-invoke-method Sht "Activate")
  86. (setq        UsdRange (vlax-get-property
  87.            (vlax-get-property Sht 'Cells)
  88.            "Range"
  89.            StrRange)
  90. ExcData         (vlax-safearray->list
  91.            (vlax-variant-value
  92.              (vlax-get-property UsdRange 'Value2)
  93.              )
  94.            )
  95. )
  96. (setq
  97.    ExcData (mapcar
  98.       (function (lambda (x) (mapcar 'vlax-variant-value x)))
  99.       ExcData
  100.       )
  101.    )
  102. (vl-catch-all-apply
  103.    'vlax-invoke-method
  104.    (list Wbk "Close")
  105.    )
  106. (vl-catch-all-apply
  107.    'vlax-invoke-method
  108.    (list ExcelApp "Quit")
  109.    )
  110. (mapcar
  111.    (function
  112.      (lambda (x)
  113. (vl-catch-all-apply
  114.   (function (lambda ()
  115.               (progn
  116.                 (if (not (vlax-object-released-p x))
  117.                   (progn
  118.                     (vlax-release-object x)
  119.                     (setq x nil)
  120.                     )
  121.                   )
  122.                 )
  123.               )
  124.             )
  125.   )
  126. )
  127.      )
  128.    (list UsdRange Sht Wbk ExcelApp)
  129.    )
  130. (gc)
  131. (gc)
  132. ExcData
  133. )
  134. ;;      main part       ;;
  135. (defun C:PP  (/        Att_Tag        Ent Filepath Headflag New_Value        Next Next_Data
  136.       Osm Poinlist Response Shtnum Strrange)
  137. (or (vl-load-com))
  138. (setq        FilePath (getfiled "Select Excel file to read :"
  139.                    (getvar "dwgprefix")
  140.                    "xls"
  141.                    16
  142.                    )
  143. )
  144. (initget 6)
  145. (setq ShtNum (getint "\nEnter the sheet number <1> : "))
  146. (if (not ShtNum)
  147.    (setq ShtNum 1))
  148. (setq        strRange (strcase
  149.            (getstring "\n  Enter address of used range <A1:C99>: ")))
  150. (if (eq "" strRange)
  151.    (setq strRange "A1:C99"))
  152. (initget "Yes No")
  153. (setq        Response (getkword
  154.            "\n   Is the Excel table has the headers? (Y/N) <Y>: "))
  155. (if (not Response)
  156.    (setq Response "Yes"))
  157. (if (eq "Yes" Response)
  158.    (setq HeadFlag T)
  159.    (setq HeadFlag nil))
  160. (setq PoinList (EXR FilePath ShtNum strRange))
  161. (if HeadFlag
  162.    (setq PoinList (cdr PoinList)))
  163. (if PoinList
  164.    (progn
  165.      (makepoint)
  166.      (if (not (tblsearch "BLOCK" "POINT_ELEV"))
  167. (progn
  168.   (alert "Something wrong\nprogramm stopped")
  169.   (exit)
  170.   (princ)))
  171.      (setq osm (getvar "osmode"))
  172.      (setvar "cmdecho" 0)
  173.      (setvar "osmode" 0)
  174.      (foreach point  PoinList
  175. (command "._-insert" "POINT_ELEV" point 1 1 0)
  176. (setq ent (entlast))
  177. (setq next ent)
  178. (while (setq next (entnext next))
  179.   (setq next_data (entget next))
  180.   (setq att_tag (cdr (assoc 2 next_data)))
  181.   (cond
  182.     ((eq (strcase "XCOORD") att_tag)
  183.      (setq new_value (rtos (car point) 2 1)))
  184.     ((eq (strcase "YCOORD") att_tag)
  185.      (setq new_value (rtos (cadr point) 2 1)))
  186.     ((eq (strcase "ZCOORD") att_tag)
  187.      (setq new_value (rtos (caddr point) 2 1))))
  188.   (entmod
  189.     (subst (cons 1 new_value) (assoc 1 next_data) next_data))
  190.   (entupd ent)
  191.   )
  192. )
  193.      (command "._zoom" "_e");by suit
  194.      )
  195.    (alert "Trouble with reading Excel data")
  196.    )
  197. (setvar "osmode" osm)
  198. (setvar "cmdecho" 1)
  199. (princ)
  200. )
  201. ;; TesT : (C:PP)
  202. (prompt "\n====================================\n")
  203. (prompt "\n\t>>>\tType PP to execute ... \t>>>\n")
  204. (prompt "\n====================================\n")
  205. (prin1)

 
~'J'~
回复

使用道具 举报

8

主题

38

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 15:24:37 | 显示全部楼层
好的,胖子,尽力吧
祝你好运!
 
谢谢
哈沙德
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-1 20:44 , Processed in 1.159006 second(s), 72 queries .

© 2020-2025 乐筑天下

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