乐筑天下

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

[编程交流] 2010 lisp故障

[复制链接]
dhl

10

主题

36

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2022-7-6 10:07:29 | 显示全部楼层 |阅读模式
你好
 
这里有谁能告诉我为什么这个惯例在2009年很好地发挥作用,但在2010年却一点也没有。
 
功能描述:
 
从给定的行数和列数中,autocad将任意图元均匀放置在给定空间上
 
尽管如此,这是我第一次编译,所以它相当粗糙。任何需要改进的地方都值得欢迎!
 
  1. (defun c:APLAC (/ oldcmd ss r1 c1 rc pt1 pt2 pt3 basepoint xbase ybase rad deg inspt inspt2)
  2. (setq oldcmd (getvar "cmdecho"))
  3. (setvar "cmdecho" 0)
  4. (princ "-----Space evenly-----")
  5. (setq aa (getstring "\n Perpendicular space / Twisted Space <T> "))
  6. (setq r1 (getint "\n Number of rows: "))
  7. (setq c1 (getint "\n Number of columns: "))
  8. (setq rc (+ c1 r1))
  9. (if (= aa "") ; Perpendicular space
  10.    (progn
  11.      (setq pt1 (getpoint "\n Upper left corner: "))
  12.      (setq pt3 (getcorner pt1 "\n Lower right corner"))
  13.      (setq pt2 (list (car pt1) (cadr pt3) 0))
  14.    )
  15.    (progn ; Twisted space
  16.      (setq pt1 (getpoint "\n Upper left corner: "))
  17.      (princ "\n Lower left corner: ")
  18.      (command "_.line" pt1 pause "")
  19.      (setq pt2 (getvar "lastpoint"))
  20.      (command "_.erase" pt1 "")
  21.      (princ "\n Lower right corner: ")
  22.      (command "_.line" pt2 pause "")
  23.      (setq pt3 (getvar "lastpoint"))
  24.      (command "_.erase" pt2 "")
  25.    )
  26.   )
  27. (setq xbase (/ (distance pt3 pt2) (* c1 2))) ; X-coord for array
  28. (setq ybase (/ (distance pt1 pt2) (* r1 2))) ; Y-coord for array
  29. (setq rad (angle pt2 pt3)) ; Angle for twisted space
  30. (setq deg (* 180.0 (/ rad pi))) ; Angle in degree for twisted space
  31. (setq basepoint(list (+ (car pt2) xbase) (+ (cadr pt2) ybase) 0)) ; Coordinate for array
  32.   (while (= ss nil) ; Chose symbol
  33.     (setq ss(entsel))
  34.   )
  35. (setq inspt(cdr(assoc 10 (entget (car ss))))) ; Insertion point for chosen symbol
  36. (command "_copy" ss "" inspt basepoint)
  37. (command "_rotate" (ssget "L") "" pt2 deg)
  38. (setq inspt2(cdr(assoc 10 (entget (ssname (ssget "L") 0))))) ; Insertion point for symbol in array
  39. (command "rotate" (ssget "L") "" inspt2 pause) ; Rotates symbol before array
  40. (if (> rc 2) ; Array only if the sum of rows and colums is larger than2
  41.    (progn
  42.    (command "ucs" "3" pt2 pt3 pt1)
  43.    (cond ((= r1 1) ; Array at row=1
  44.      (progn
  45.       (command "_.array" (ssget "L") "" "R" r1 c1 (/ (distance pt3 pt2) c1) )
  46.      )
  47.      )
  48.      ((= c1 1) ; Array at column=1
  49.      (progn
  50.       (command "_.array" (ssget "L") "" "R" r1 c1 (/ (distance pt1 pt2) r1))
  51.      )
  52.      )
  53.      ( ; Array for any combination of rows and columns
  54.      (progn
  55.       (command "_.array" (ssget "L") "" "R" r1 c1 (/ (distance pt1 pt2) r1) (/ (distance pt3 pt2) c1) )
  56.      )
  57.      )
  58.    ) ;end cond
  59.    (command "_.ucs" "w")
  60.    ) ;end progn
  61. ) ;end if
  62. (setvar "cmdecho" oldcmd)
  63. (princ)
  64. ) ; end defun
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:13:27 | 显示全部楼层
我用我的Cad 2010版本试过了,它运行正常。
 
运行这些代码时收到的错误消息是什么?
 
有些命令需要是标准的。
 
塔瓦特
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 10:15:17 | 显示全部楼层
我可以证实上述声明。刚刚在我的家用电脑上试用了2010版的lisp例程,效果很好。
回复

使用道具 举报

dhl

10

主题

36

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2022-7-6 10:19:41 | 显示全部楼层
我懂了。感谢您的快速回复!
 
它似乎可以完美地与简单的autocad图元(如圆或其他)配合使用。
 
然而,我使用Autocad Mep,并在2009年能够将其用于Mep设备,而不是在2010年。
 
据我所见,DXF代码结构似乎从2009年更改为2010年,用于收集设备插入点的命令也不同。检查设备的DXF条目甚至不再包括插入点,但在哪里可以找到插入点?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:21:06 | 显示全部楼层
仅供参考,getpoint可以接受多个参数。。。保存您绘制/删除这些线。。。
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 10:26:05 | 显示全部楼层
所以你用这个例程来插入DXF?你能给我们举一个MEP设备的例子吗?我不熟悉这个术语。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:27:31 | 显示全部楼层
 
他指的是DXF组码,而不是DXF文件。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:30:04 | 显示全部楼层
 
您正在查询哪些对象的插入点?
回复

使用道具 举报

dhl

10

主题

36

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2022-7-6 10:33:48 | 显示全部楼层
作为Mep电气设备,我试图附加一个包含示例对象的dwg,但有250kb的限制。。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:37:53 | 显示全部楼层
 
我没有MEP,所以无论如何都没有帮助-您是否查询了实体的entget数据以确定插入点的DXF代码的可能候选项,或者信息是否未显示?
 
此外,也许可以使用VL来实现这一点,所以可以转储对象以查看您可以看到的内容
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 20:50 , Processed in 0.735392 second(s), 83 queries .

© 2020-2025 乐筑天下

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