乐筑天下

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

[IronPython]选择集示例

[复制链接]

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-5-7 19:57:09 | 显示全部楼层 |阅读模式
大家好,
我有一些关于Ipy的工作要做,我想我会分享一些片段。
这可能不是最佳实现,但它显示了处理时要考虑的几个重要事项。在这种情况下,传递一个对象数组(Python没有数组)。
该方法基本上是一些用于选择特定类型的一些对象的模板代码,如果需要,将它扩展到多种类型并不困难。
您将需要Tim的PyAcad.Net来在acad中运行它,如果您需要一个简单的dll来运行脚本,我将在另一个线程中发布一个简单的VS解决方案,稍后我将在此链接。python脚本:
  1. # selection.py
  2. # Created: 7th May 2009 Copyright Mick Duprez
  3. # initialise and import our lib's
  4. import sys
  5. #----- change these paths as required for your system and lib.file locations
  6. sys.path.append('C:\\Program Files\\AutoCAD 2009')
  7. sys.path.append('C:\\DCS_3D\\ipyscripts')
  8. import clr
  9. clr.AddReference('System.Windows.Forms')
  10. clr.AddReference('System.Drawing')
  11. clr.AddReferenceToFile('acdbmgd.dll')
  12. clr.AddReferenceToFile('acmgd.dll')
  13. import System.Windows.Forms as winfrm
  14. from System.Drawing import *
  15. import Autodesk.AutoCAD.DatabaseServices as acdb
  16. import Autodesk.AutoCAD.ApplicationServices.Application as app
  17. import Autodesk.AutoCAD.EditorInput as aced
  18. from System import Array
  19. # method to select entities using a simple filter for entity type
  20. def select_ents(typecode, value):
  21.         doc = app.DocumentManager.MdiActiveDocument
  22.         ed = doc.Editor
  23.         tv = acdb.TypedValue(typecode, value)
  24.         filter = Array[acdb.TypedValue]([tv]) # create a .net array for acad to use
  25.         res = ed.GetSelection(aced.SelectionFilter(filter))
  26.         if res.Status != aced.PromptStatus.OK or res.Status == aced.PromptStatus.Cancel:
  27.                 return None
  28.         ids = res.Value.GetObjectIds() # gives us an array object
  29.         return ids
  30. #### test the selection method:
  31. ids = select_ents(0, "3DSOLID")
  32. doc = app.DocumentManager.MdiActiveDocument
  33. ed = doc.Editor
  34. idlist = list(ids) #convert the array to a python list
  35. for id in idlist:
  36.         ed.WriteMessage(id.ToString() + '\n')

PS -对于IronPython 1.1,acad 2007-9

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

32

主题

258

帖子

232

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
162
发表于 2021-7-6 09:53:17 | 显示全部楼层
谢谢你,米克
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 03:59 , Processed in 0.141885 second(s), 56 queries .

© 2020-2025 乐筑天下

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