乐筑天下

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

[编程交流] Can';t找出这个错误

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:50:07 | 显示全部楼层 |阅读模式
大家好,
 
这段代码来自另一个线程(最近),但是,由于它有点偏离主题,我认为它应该有一个新的线程。
 
我最初发布这段代码是为了将所有实体从层“0”移动到层“0-From0”,但它一直显示错误,我无法找出原因:
 
  1. (defun c:0to0  (/ ss layers 0lay 0Nlay err)
  2. (if (setq ss (ssget "X" '((8 . "0"))))
  3.    (progn
  4.      (setq layers (vla-get-layers
  5.             (vla-get-ActiveDocument
  6.               (vlax-get-acad-object))))
  7.      (vlax-for    lay  layers
  8.    (cond ((eq "0" (vla-get-name lay))
  9.           (setq 0lay lay))
  10.          ((eq "0-From0" (vla-get-name lay))
  11.           (setq 0Nlay lay))))
  12.      (if (not 0Nlay)
  13.    (setq 0Nlay (vla-add layers "0-From0")))
  14.      (vla-put-color 0Nlay (vla-get-color 0lay))
  15.      (vla-put-linetype 0Nlay (vla-get-linetype 0lay))
  16.      (vla-put-lineweight 0Nlay (vla-get-lineweight 0lay))
  17.      (if (vl-catch-all-error-p
  18.        (setq err (vl-catch-all-apply
  19.            '(lambda (x) (vla-put-layer x "0-From0"))
  20.            (mapcar    'vlax-ename->vla-object
  21.                (mapcar 'cadr (ssnamex ss))))))
  22.    (princ (strcat "\nError: " (vl-catch-all-error-message err)))))
  23.    (princ "\n<!> No Objects Found on Layer "0" <!>"))
  24. (princ))

 
我发布了这段代码,只是为了让我过得去,但原来的代码把我逼疯了,因为我无法找出错误的来源!
 
  1. (defun c:0to0  (/ ss layers 0lay 0Nlay)
  2. (if (setq ss (ssget "X" '((8 . "0"))))
  3.    (progn
  4.      (setq layers (vla-get-layers
  5.             (vla-get-ActiveDocument
  6.               (vlax-get-acad-object))))
  7.      (vlax-for    lay  layers
  8.    (cond ((eq "0" (vla-get-name lay))
  9.           (setq 0lay lay))
  10.          ((eq "0-From0" (vla-get-name lay))
  11.           (setq 0Nlay lay))))
  12.      (if (not 0Nlay)
  13.    (setq 0Nlay (vla-add layers "0-From0")))
  14.      (vla-put-color 0Nlay (vla-get-color 0lay))
  15.      (vla-put-linetype 0Nlay (vla-get-linetype 0lay))
  16.      (vla-put-lineweight 0Nlay (vla-get-lineweight 0lay))
  17.      (mapcar '(lambda (x) (vla-put-layer x "0-From0"))
  18.          (mapcar 'vlax-ename->vla-object
  19.              (mapcar 'cadr (ssnamex ss)))))
  20.    (princ "\n<!> No Objects Found on Layer "0" <!>"))
  21. (princ))

 
非常感谢您的帮助和时间!
 
干杯
 
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 15:00:40 | 显示全部楼层
你错过了一个mapcar lee,代替vl catch all apply
 
 
 
我认为没有必要捕捉错误,因为您只处理一个层,即第0层。如果它被锁定(第0层),则不会处理所有内容。您需要在开始时解锁层0,因为从层0传输到另一层是您的目标。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:12:15 | 显示全部楼层
谢谢Wizman-
 
但是,即使我想使用这种错误捕获方法——我认为vl catch all apply以与“mapcar”相同的方式执行,我错了吗?
 
是的,如果被锁定,也许我应该包括解锁第0层的编码。
 
干杯
 
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 15:24:43 | 显示全部楼层
 
它的功能更像“应用”功能。当你用它的另一种形式写的时候,你会看到它。
 
 
  1. (mapcar
  2.                '(lambda (x)
  3.                     (if
  4.                         (vl-catch-all-error-p
  5.                             (setq err
  6.                                      (vl-catch-all-apply
  7.                                          'vla-put-layer
  8.                                          (list x "0-From0")
  9.                                      )
  10.                             )
  11.                         )
  12.                            (princ (strcat "\nError: "
  13.                                           (vl-catch-all-error-message err)
  14.                                   )
  15.                            )
  16.                     )
  17.                 )
  18.                (mapcar 'vlax-ename->vla-object
  19.                        (mapcar 'cadr (ssnamex ss))
  20.                )
  21.            )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:31:49 | 显示全部楼层
啊,我现在明白了——我想线索就在名字里
 
 
像往常一样为威兹曼干杯
 
回复

使用道具 举报

4

主题

22

帖子

18

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 15:40:14 | 显示全部楼层
你好,李,
我看到了这个帖子,很高兴你能找出代码中的错误。我还想问你关于解锁零层的问题。你能在我的另一个线程中发布一个修改代码,在移动所有实体之前解锁零层吗?
 
谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:58:19 | 显示全部楼层
 
 
没问题,狮子座-可以
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 20:54 , Processed in 0.362030 second(s), 66 queries .

© 2020-2025 乐筑天下

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