明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3906|回复: 1

ARX的NET函数库之实体篇

[复制链接]
发表于 2014-1-21 11:53:35 | 显示全部楼层 |阅读模式
本帖最后由 efan2000 于 2014-4-18 15:04 编辑

通过C++/CLI实现ARX的托管函数在NET里调用,示例如下:
  1. '创建文字实体
  2. Dim rb As ResultBuffer = New ResultBuffer
  3. rb.Add(New TypedValue(DxfCode.Start, "TEXT"))
  4. rb.Add(New TypedValue(10, New Point3d(0, 0, 0)))
  5. rb.Add(New TypedValue(40, 2.5))
  6. rb.Add(New TypedValue(DxfCode.Text, "Hello World"))
  7. mcnetarx.GlobalFunctions.AcdbEntMake(rb)
  8. '定义保存实体的变量
  9. Dim ent() As Integer = New Integer() {}   
  10. '获取最后一个实体
  11. mcnetarx.GlobalFunctions.AcdbEntLast(ent)
  12. '获取实体的DXF组码
  13. rb = mcnetarx.GlobalFunctions.AcdbEntGet(ent)
  14. Dim tvs() As TypedValue = rb.AsArray()
  15. rb = New ResultBuffer
  16. For Each tv As TypedValue In tvs
  17.     If tv.TypeCode = 1 Then
  18.         rb.Add(New TypedValue(tv.TypeCode, "明经通道"))
  19.     Else
  20.         rb.Add(New TypedValue(tv.TypeCode, tv.Value))
  21.     End If
  22. Next
  23. '修改实体,如果实体是文字,改为
  24. mcnetarx.GlobalFunctions.AcdbEntMod(rb)


注:附件基于AutoCAD2007和VS2005开发,理论上同时支持32位的2008和2009,没做进一步测试。
更新:基于AutoCAD2010的32位,理论上同时支持32位的2011和2012,没做进一步测试。
          基于AutoCAD2013,理论上同时支持2014和2015,没做进一步测试。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2014-6-19 20:40:25 | 显示全部楼层
本帖最后由 efan2000 于 2014-6-19 20:44 编辑

COM版本的更新了,可以在VB、VBA或者NET等等中调用。
  1. Sub test()
  2. '创建文字实体
  3. Dim rb As ResultBuffer
  4. Set rb = New ResultBuffer
  5. rb.AddTypedValue 0, "TEXT"
  6. Dim pt(0 To 2) As Double
  7. rb.AddTypedValue 10, pt
  8. rb.AddTypedValue 40, 2.5
  9. rb.AddTypedValue 1, "Hello World"
  10. Debug.Print AcdbEntMake(rb)
  11. '定义保存实体的变量
  12. Dim ent As Variant
  13. '获取最后一个实体
  14. Debug.Print AcdbEntLast(ent)
  15. '获取实体的DXF组码
  16. Set rb = AcdbEntGet(ent)
  17. Dim tvs As Variant
  18. tvs = rb.AsArray()
  19. Set rb = New ResultBuffer
  20. Dim i As Integer
  21. For i = 0 To UBound(tvs)
  22.     Dim tv As TypedValue
  23.     Set tv = tvs(i)
  24.     If tv.TypeCode = 1 Then
  25.         rb.AddTypedValue tv.TypeCode, "明经通道"
  26.     Else
  27.         rb.AddTypedValue tv.TypeCode, tv.Value
  28.     End If
  29. Next
  30. '修改实体,如果实体是文字,改为
  31. Debug.Print AcdbEntMod(rb)
  32. End Sub

ARX的COM接口下载地址

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-24 17:32 , Processed in 0.170607 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表