本帖最后由 efan2000 于 2014-4-18 15:04 编辑
通过C++/CLI实现ARX的托管函数在NET里调用,示例如下:
- '创建文字实体
- Dim rb As ResultBuffer = New ResultBuffer
- rb.Add(New TypedValue(DxfCode.Start, "TEXT"))
- rb.Add(New TypedValue(10, New Point3d(0, 0, 0)))
- rb.Add(New TypedValue(40, 2.5))
- rb.Add(New TypedValue(DxfCode.Text, "Hello World"))
- mcnetarx.GlobalFunctions.AcdbEntMake(rb)
- '定义保存实体的变量
- Dim ent() As Integer = New Integer() {}
- '获取最后一个实体
- mcnetarx.GlobalFunctions.AcdbEntLast(ent)
- '获取实体的DXF组码
- rb = mcnetarx.GlobalFunctions.AcdbEntGet(ent)
- Dim tvs() As TypedValue = rb.AsArray()
- rb = New ResultBuffer
- For Each tv As TypedValue In tvs
- If tv.TypeCode = 1 Then
- rb.Add(New TypedValue(tv.TypeCode, "明经通道"))
- Else
- rb.Add(New TypedValue(tv.TypeCode, tv.Value))
- End If
- Next
- '修改实体,如果实体是文字,改为
- mcnetarx.GlobalFunctions.AcdbEntMod(rb)
注:附件基于AutoCAD2007和VS2005开发,理论上同时支持32位的2008和2009,没做进一步测试。
更新:基于AutoCAD2010的32位,理论上同时支持32位的2011和2012,没做进一步测试。
基于AutoCAD2013,理论上同时支持2014和2015,没做进一步测试。
|