乐筑天下

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

[编程交流] 将现有Lisp修改为includ

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:20:23 | 显示全部楼层 |阅读模式
大家好,
修改现有Lisp以包括Z值?
 
我有一个现有的Lisp(通过Rocket软件)输出一个块
属性值和X、Y值。
 
我想修改它以添加Z值,并将输出文件格式从*更改为。cdf格式为*。CSV格式。
 
现有代码如下:
  1. ; Pilout - write the X and Y coordinates of all inserts of a block to a file.
  2. ; Copyright 1997 by Rocket software
  3. ; The other kind.
  4. ; Subroutine Frat - returns the value of the first filled attribute found,
  5. ; otherwise "".  Takes one argument, the insertion ename.
  6. (DEFUN FRAT (enam / str)
  7. (while (and (null str)
  8.              (/= "SEQEND"
  9.              (cdr (assoc 0 (setq entt (entget (setq enam (entnext enam))))))))
  10.         (setq vall (cdr (assoc 1 entt)))
  11.         (while (= (substr vall 1 1) " ") (setq vall (substr vall 2)))
  12.         (if (/= vall "") (setq str vall)))
  13. (if str str ""))
  14. ; Frat end.
  15. (DEFUN C:PILOUT (/ num bl enampt entt ss filnam fn rad len so pa datstr)
  16. (setvar "cmdecho" 0)
  17. (setq num 0)
  18. (setq bl (getstring "Block to use or <Return> to select: "))
  19. (if (and (= bl "")
  20.           (setq enampt (entsel "Select a block: ")))
  21.      (progn
  22.           (setq entt (entget (car enampt)))
  23.           (setq bl (cdr (assoc 2 entt)))
  24.           (if bl (prompt bl))))
  25. (if bl (setq ss (ssget "X" (list (cons 2 bl)))))
  26. (if ss
  27.     (progn
  28.          (setq filnam (getfiled "Data File" "Piles.cdf" "" 1))
  29.          (if filnam (setq fn (open filnam "w")))
  30.          (setq rad (/ (getvar "viewsize") 25))
  31.          (setq len (strcat "/" (itoa (sslength ss))))
  32.          (while (setq so (ssname ss num))
  33.                 (setq entt (entget so))
  34.                 (setq num (1+ num))
  35.                 (grtext -2 (strcat (itoa num) len))
  36.                 (setq pa (cdr (assoc 10 entt)))
  37. ; Translate point data to current ucs.
  38.                 (setq pa (trans pa 0 1))
  39.                 (grdraw (polar pa (/ pi 4) rad)
  40.                         (polar pa (* 1.25 pi) rad) 7)
  41.                 (grdraw (polar pa (* pi 0.75) rad)
  42.                         (polar pa (* pi 1.75) rad) 7)
  43.                 (setq datstr (strcat (frat so) ","
  44.                                      (rtos (car pa) 2 6) ","
  45.                                      (rtos (cadr pa) 2 6)))
  46.                 (write-line datstr fn))
  47.          (if fn (close fn)))
  48.     (if bl
  49.           (write-line "\nCan't find any such block. ")
  50.           (write-line "\nSome type of error...")))
  51. (if ss (write-line (strcat "\nLines written to file: " (itoa num))))
  52. (princ))

如果有任何帮助,我们将不胜感激!
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:37:23 | 显示全部楼层
我看到了X和Y坐标的来源:
(rtos(car pa)2.6“,”
(实时操作系统(cadr pa)2 6)))
 
我尝试添加:
(实时操作系统(caddr pa)2 6)))
由于函数caddr应该从存储的点变量“pa”中提取Z值,但是我什么也得不到。很确定我在前端遗漏了一些东西,比如pa设置为只存储X,Y值而不是Z值?
 
再次感谢您的帮助。
提前谢谢。
回复

使用道具 举报

8

主题

1647

帖子

1647

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-5 23:56:13 | 显示全部楼层
请阅读代码发布指南:http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南
 
我已将您的请求转移到Autolisp论坛。
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 00:16:51 | 显示全部楼层
JQUAILE,
 
试着这样做:
 
  1. (setq datstr (strcat (frat so) ","
  2.                                      (rtos (car   pa) 2 6) ","
  3.                                      (rtos (cadr  pa) 2 6) ","
  4.                                      (rtos (caddr pa) 2 6)
  5.                              )
  6.                 )

 
要更改为csv文件,请在此处修改:
 
  1. (setq filnam (getfiled "Data File" "Piles.csv" "" 1))

 
我没有测试,所以试试看
 
ymg公司
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:21:18 | 显示全部楼层
ymg3,
非常感谢,它像一个魅力!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:23 , Processed in 0.481943 second(s), 62 queries .

© 2020-2025 乐筑天下

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