乐筑天下

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

[编程交流] 选择要获取的实体';s L

[复制链接]

170

主题

347

帖子

174

银币

中流砥柱

Rank: 25

铜币
870
发表于 2022-7-6 22:39:09 | 显示全部楼层 |阅读模式
AutoCAD 2009和10 VBA。
 
是否可以选择一个特定的分解实体来获取其图层名称?一个人可以吗
再往前走一步,在块中选择一个特定的enity?我想知道
如果可能的话,如何在这两种情况下做到这一点。
 
非常感谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 22:43:49 | 显示全部楼层
它必须是VBA吗。。。
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 22:49:16 | 显示全部楼层
VBA版本如下:
 
  1. Sub GetNestedEnt()
  2. Dim varPckPt As Variant
  3. Dim obj As AcadObject
  4. Dim varMatrix As Variant
  5. Dim lngContext As Long
  6. Dim strObjName As String
  7. Dim strText As String
  8. Dim ent As AcadEntity
  9.   On Error GoTo MissedPick
  10.   ThisDrawing.Utility.GetSubEntity obj, varPckPt, varMatrix, lngContext, "Select an entity: "
  11.   Set ent = obj
  12.   MsgBox ent.Layer
  13.   On Error GoTo 0
  14.   
  15.   Exit Sub
  16. MissedPick:
  17. MsgBox "Missed Pick!"
  18. End Sub
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 22:54:03 | 显示全部楼层
LISP要简洁得多。。。
 
  1. (defun c:getlay (/ ent)
  2. (and (setq ent (car (nentsel "\nSelect Entity: ")))
  3.       (princ (strcat "\nLayer is: "
  4.                      (cdr (assoc 8 (entget ent))))))
  5. (princ))
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 22:59:50 | 显示全部楼层
 
总是这样。
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 23:04:14 | 显示全部楼层
你是要学习LISP Sean还是直接进入。NET或C#/++?或者您已经知道LISP,但使用VBA代替?
 
正如我在2010年发现的那样,VBA已不复存在。。。
 
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 23:09:58 | 显示全部楼层
有一组相当特殊的情况使我绕过AutoLisp而支持VBA(主要是由于其他常用应用程序中基于VB的支持)。不过,我真希望我花了必要的时间来学习lisp。
 
我现在把大部分时间都花在了工作上。NET,并慢慢地将我的旧VBA例程转移到C#。如果空闲时间允许,我会学习C++。
 
我已经接受了一个事实,那就是我可能永远也学不会口齿不清。
 
这里有一个问题问你:你计划下载必要的文件,以激活VBA的2010年安装?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 23:11:33 | 显示全部楼层
 
我曾考虑过学习VBA,因为它似乎离LISP不太远,因为LISP中使用的大多数方法都适用于VBA,只有一种不同的格式化代码的方法。但现在我只想专注于C++,这将使我在学习其他语言方面有更好的地位。
 
所以,回答你的问题,可能不是。
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 23:16:30 | 显示全部楼层
我不能说我会责怪你。当然不是在游戏的这个阶段。实际上,我想知道有多少AutoCAD 2010用户有机会下载这些文件。
 
我有Inventor 2009,但还没有投入太多时间。由于VBA是API中数量有限的一种,我想知道发明家群体是否更多地归属于VBA,因此对其即将消亡更为疯狂。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-6 23:23:02 | 显示全部楼层
这里是我每天用来获取嵌套层名称和其他信息的一个
 
  1. ;;; AUTHOR
  2. ;;; Copyright© 2009 Ron Perez (ronperez ( a t ) gmail ( dot ) com)
  3. ;;;
  4. ;;;List nested objects info
  5. (defun c:q (/ x z msg plt lyr olyr descr plot dxf propsbyobject plot?)
  6. (defun plot? (ent /)
  7.    (if (zerop (dxf 290 ent))
  8.      "NO"
  9.      "Yes"
  10.    )
  11. )
  12. (defun propsbyobject (ent / out)
  13.    (setq out "")
  14.    (foreach prop '((48 . "Ltype-Scale ") (6 . "Ltype ") (62 . "Color "))
  15.      (if (dxf (car prop) ent)
  16.        (setq out (strcat (cdr prop) out))
  17.      )
  18.    )
  19.    (if (zerop (strlen out))
  20.      out
  21.      (strcat "\n    *Property BYOBJECT: " out)
  22.    )
  23. )
  24. (defun dxf (x ename /) (cdr (assoc x (entget ename))))
  25. (if (setq x (nentsel))
  26.    (progn (setq lyr  (tblobjname "layer" (dxf 8 (car x)))
  27.                 olyr (vlax-ename->vla-object lyr)
  28.                 plt  (plot? lyr)
  29.           )
  30.           (if (/= (setq descr (vla-get-description olyr)) "")
  31.             (setq descr (strcat "\n    Description:  " descr))
  32.           )
  33.           (setq msg (strcat "[ "
  34.                             (dxf 0 (car x))
  35.                             " ]\n    Layer:  "
  36.                             (dxf 8 (car x))
  37.                             "\n    Color:  "
  38.                             (itoa (dxf 62 lyr))
  39.                             "\n    Linetype:  "
  40.                             (dxf 6 lyr)
  41.                             "\n    Plottable:  "
  42.                             plt
  43.                             descr
  44.                             (propsbyobject (car x))
  45.                             "\n"
  46.                             "\n"
  47.                     )
  48.           )
  49.           (if (cadddr x)
  50.             (setq msg (foreach z (cadddr x)
  51.                         (setq lyr  (tblobjname "layer" (dxf 8 z))
  52.                               olyr (vlax-ename->vla-object lyr)
  53.                               plt  (plot? lyr)
  54.                         )
  55.                         (if (/= (setq descr (vla-get-description olyr)) "")
  56.                           (setq descr (strcat "\n    Description:  " descr))
  57.                         )
  58.                         (setq
  59.                           msg (strcat "[ "
  60.                                       (if (vlax-property-available-p (vlax-ename->vla-object z) 'path)
  61.                                         (strcat "XREF - " (dxf 2 z))
  62.                                         (strcat "INSERT - " (dxf 2 z))
  63.                                       )
  64.                                       " ]\n    Layer:  "
  65.                                       (dxf 8 z)
  66.                                       "\n    Color:  "
  67.                                       (itoa (dxf 62 lyr))
  68.                                       "\n    Linetype:  "
  69.                                       (dxf 6 lyr)
  70.                                       "\n    Plottable:  "
  71.                                       plt
  72.                                       descr
  73.                                       (propsbyobject z)
  74.                                       "\n"
  75.                                       "\n"
  76.                                       msg
  77.                               )
  78.                         )
  79.                       )
  80.             )
  81.           )
  82.           (alert msg)
  83.           (princ msg)
  84.    )
  85.    (princ "\nNothing selected...")
  86. )
  87. (princ)
  88. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 05:40 , Processed in 0.458223 second(s), 73 queries .

© 2020-2025 乐筑天下

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