乐筑天下

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

[编程交流] Lisp程序的错误

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:59:07 | 显示全部楼层 |阅读模式
你好
 
我有一个Lisp程序的工作很好的人,但它不适合我。
 
该lisp旨在将平面的二维平面转换为平面内有导管或护套的三维平面。有两条多段线(一条用于平面的外部,另一条用于风管的外部)。
 
该过程是设置多段线的高程并拉伸平面的多段线,而不包含平面内“风管”的体积。
 
你可以在这个视频中看到:
 
这是lisp,我不明白为什么有消息表明ssget函数模式错误
 
  1. (defun c:ex-sub (/ sd s pts ss cm e ent i s1)
  2. ;;;        ==-- Author : Tharwat Al Shoufi        --==        ;;;
  3. ;;;        Extrude and extract inside polylines        ;;;
  4. (vl-load-com)
  5. (or Doc (setq Doc (vla-get-ActiveDocument (vlax-get-acad-object))))
  6. (setq *elv* (if *elv*
  7.                *elv*
  8.                1.0
  9.              )
  10.        *ex*  (if *ex*
  11.                *ex*
  12.                1.0
  13.              )
  14. )
  15. (if
  16.    (and (progn (initget 6)
  17.                (setq *elv* (cond ((getdist (strcat "\n Specify Elevations " (strcat " < " (rtos *elv* 2 2) " > :"))))
  18.                                  (t *elv*)
  19.                            )
  20.                )
  21.         )
  22.         (progn (initget 6)
  23.                (setq *ex* (cond ((getdist (strcat "\n Specify extrusion height " (strcat " < " (rtos *ex* 2 2) " > :"))))
  24.                                 (t *ex*)
  25.                           )
  26.                )
  27.         )
  28.         (setq sd (ssadd))
  29.         (setq s (car (entsel "\nSelect Single outside LWpolyline")))
  30.         (if (wcmatch (cdr (assoc 0 (setq e (entget s)))) "*POLYLINE")
  31.           t
  32.           (progn (princ "\n Your selection is not a polyline or nothing selected !!") nil)
  33.         )
  34.    )
  35.     (progn (foreach pt e
  36.              (if (eq (car pt) 10)
  37.                (setq pts (cons (list (cadr pt) (caddr pt)) pts))
  38.              )
  39.            )
  40.            (if (setq ss (ssget "WP" pts '((0 . "*POLYLINE"))))
  41.              (progn (vla-StartUndoMark Doc)
  42.                     (setq cm (getvar 'cmdecho))
  43.                     (setvar 'cmdecho 0)
  44.                     (entmod (subst (cons 38 *elv*) (assoc 38 e) e))
  45.                     (command "_.extrude" s "" *ex*)
  46.                     (setq s1 (entlast))
  47.                     (repeat (setq i (sslength ss))
  48.                       (entmod (subst (cons 38 *elv*) (assoc 38 (setq ent (entget (ssname ss (setq i (1- i)))))) ent))
  49.                       (command "_.extrude" (ssname ss i) "" *ex*)
  50.                       (ssadd (entlast) sd)
  51.                     )
  52.                     (command "_.subtract" s1 "" sd "")
  53.                     (setvar 'cmdecho cm)
  54.                     (vla-Endundomark Doc)
  55.              )
  56.            )
  57.     )
  58.     (princ)
  59. )
  60. (princ "\n Written by Tharwat Al Shoufi")
  61. (princ)
  62. )

 
你能帮我找到解决办法吗?
 
Lisp程序对你有用吗?
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 07:08:54 | 显示全部楼层
youtube链接无效
 
我们等待着塔瓦。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:21:46 | 显示全部楼层
 
您好,GP,
 
以下是
请尝试代码,并告诉我,如果它与你的工作或没有在视频中显示回来。
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:28:56 | 显示全部楼层
你好
 
我有一个Lisp程序的人很好的工作(所有这一切都是好的塔瓦谁写的),但它不适合我。
 
该lisp旨在将平面的二维平面转换为平面内有导管或护套的三维平面。有两条多段线(一条用于平面的外部,另一条用于风管的外部)。
 
该过程是设置多段线的高程并拉伸平面的多段线,而不包含平面内“风管”的体积。
 
你可以在塔尔瓦特邮报的视频中看到。
 
这是lisp,我不明白为什么有消息表明ssget函数模式错误
 
  1. (defun c:ex-sub (/ sd s pts ss cm e ent i s1)
  2. ;;;        ==-- Author : Tharwat Al Shoufi        --==        ;;;
  3. ;;;        Extrude and extract inside polylines        ;;;
  4. (vl-load-com)
  5. (or Doc (setq Doc (vla-get-ActiveDocument (vlax-get-acad-object))))
  6. (setq *elv* (if *elv*
  7.                *elv*
  8.                1.0
  9.              )
  10.        *ex*  (if *ex*
  11.                *ex*
  12.                1.0
  13.              )
  14. )
  15. (if
  16.    (and (progn (initget 6)
  17.                (setq *elv* (cond ((getdist (strcat "\n Specify Elevations " (strcat " < " (rtos *elv* 2 2) " > :"))))
  18.                                  (t *elv*)
  19.                            )
  20.                )
  21.         )
  22.         (progn (initget 6)
  23.                (setq *ex* (cond ((getdist (strcat "\n Specify extrusion height " (strcat " < " (rtos *ex* 2 2) " > :"))))
  24.                                 (t *ex*)
  25.                           )
  26.                )
  27.         )
  28.         (setq sd (ssadd))
  29.         (setq s (car (entsel "\nSelect Single outside LWpolyline")))
  30.         (if (wcmatch (cdr (assoc 0 (setq e (entget s)))) "*POLYLINE")
  31.           t
  32.           (progn (princ "\n Your selection is not a polyline or nothing selected !!") nil)
  33.         )
  34.    )
  35.     (progn (foreach pt e
  36.              (if (eq (car pt) 10)
  37.                (setq pts (cons (list (cadr pt) (caddr pt)) pts))
  38.              )
  39.            )
  40.            (if (setq ss (ssget "WP" pts '((0 . "*POLYLINE"))))
  41.              (progn (vla-StartUndoMark Doc)
  42.                     (setq cm (getvar 'cmdecho))
  43.                     (setvar 'cmdecho 0)
  44.                     (entmod (subst (cons 38 *elv*) (assoc 38 e) e))
  45.                     (command "_.extrude" s "" *ex*)
  46.                     (setq s1 (entlast))
  47.                     (repeat (setq i (sslength ss))
  48.                       (entmod (subst (cons 38 *elv*) (assoc 38 (setq ent (entget (ssname ss (setq i (1- i)))))) ent))
  49.                       (command "_.extrude" (ssname ss i) "" *ex*)
  50.                       (ssadd (entlast) sd)
  51.                     )
  52.                     (command "_.subtract" s1 "" sd "")
  53.                     (setvar 'cmdecho cm)
  54.                     (vla-Endundomark Doc)
  55.              )
  56.            )
  57.     )
  58.     (princ)
  59. )
  60. (princ "\n Written by Tharwat Al Shoufi")
  61. (princ)
  62. )

 
你能帮我找到解决办法吗?
 
Lisp程序对你有用吗?
 
谢谢塔瓦的帮助!
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:38:49 | 显示全部楼层
是的,卡拉克找到解决方案http://www.autolisp.com :
 
http://www.autolisp.com/forum/threads/797-Lisp-to-extrude-polyline-with-elevation-and-duct-inside-the-polyline?p=2928#post2928
 
谢谢卡拉,你有个好主意!
 
非常感谢你的帮助!我非常感激!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:45:20 | 显示全部楼层
 
随时欢迎你。
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 07:53:10 | 显示全部楼层
 
使用“WP”
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:03:14 | 显示全部楼层
 
正确,之前Carl在这个链接中解决了这个问题。
 
谢谢你的时间,非常感谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 10:52 , Processed in 0.514782 second(s), 68 queries .

© 2020-2025 乐筑天下

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