乐筑天下

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

[编程交流] 我正在尝试修改下面的代码

[复制链接]

3

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
13
发表于 2022-9-7 23:14:22 | 显示全部楼层 |阅读模式
我正在尝试修改下面的代码以获取3D模型Plant3D中的总管道长度,
代码查找设置为新状态的所有管道,但我收到一条错误消息:“没有功能定义:状态“,
有人可以帮帮我吗?谢谢!
  1. (defun c:TL ( / selnew selAll status Length)
  2.   (vl-load-com)
  3.   (setq selnew(ssadd))
  4.   (setq Length 0)
  5.   
  6.    (if (setq selAll (ssget "x" '((0 . "ACPP*"))))
  7.         (progn
  8.             (setq i 0
  9.                   n (sslength selAll)
  10.             )
  11.             (while (< i n)
  12.                                 (setq ent (ssname selAll i))
  13.                                 ;convert to vl object
  14.                                 (setq vlaObj (vlax-ename->vla-object ent))
  15.                                 (if (vlax-property-available-p vlaObj 'CutLength)
  16.                                 (progn
  17.                                         (setq status (vlax-get-property vlaObj 'CutLength))
  18.                                         (ssadd ent selnew)
  19.                                 )
  20.                                 )
  21.                                 (setq Length (status + Length))
  22.                                 (setq i (1+ i))
  23.             );while
  24.         )
  25.     )
  26.        
  27.   (sssetfirst nil selnew)
  28.   alert (Length)
  29.   (princ)
  30. )


回复

使用道具 举报

15

主题

1052

帖子

58

银币

中流砥柱

Rank: 25

铜币
683
发表于 2022-9-8 01:13:12 | 显示全部楼层
您的警报缺少 ( infront.also (length) 使其查找该名称的函数并导致错误“没有函数定义:”
如果您尝试这样做(警报长度),它仍然会出错,因为该变量是一个数字,您需要使用 rtos 将其转换为字符串。
  1. (defun c:TL ( / selnew selAll len)
  2.   (vl-load-com)
  3.   (setq selnew (ssadd))
  4.   (setq len 0)
  5.   (if (setq selAll (ssget "_X" '((0 . "ACPP*"))))
  6.     (foreach ent (mapcar 'cadr (ssnamex selAll))
  7.       (setq vlaObj (vlax-ename->vla-object ent))
  8.       (if (vlax-property-available-p vlaObj 'CutLength)
  9.         (progn
  10.           (setq len (+ (vlax-get-property vlaObj 'CutLength) len))
  11.           (ssadd ent selnew)
  12.         )
  13.       )
  14.     )
  15.   )
  16.   (sssetfirst nil selnew)
  17.   (if (> len 0)
  18.     (alert (strcat "Total Length: " (rtos len 2 3)))
  19.   )
  20.   (princ)
  21. )

回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-4-5 01:31 , Processed in 0.391887 second(s), 56 queries .

© 2020-2025 乐筑天下

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