乐筑天下

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

求助!!!怎么得到三维实体的表面积???

[复制链接]

10

主题

24

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
64
发表于 2012-7-14 19:39:00 | 显示全部楼层 |阅读模式
需要估算油漆,怎么在三维实体模型中得到表面积?
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2012-7-14 20:46:00 | 显示全部楼层
2009以上版本可以引用acdbmgdbrep.dll
以下就没有直接的办法了
回复

使用道具 举报

10

主题

24

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
64
发表于 2012-7-14 20:51:00 | 显示全部楼层
感觉这样可以解决,但不知道怎么验证是否正确
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
Public Class Class1
     _
    Public Sub xarea()
        Dim db As Database = HostApplicationServices.WorkingDatabase
        Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
        Dim toal As Double = 0
        Using trans As Transaction = db.TransactionManager.StartOpenCloseTransaction()
            Dim value(0) As TypedValue
            value(0) = New TypedValue(DxfCode.Start, "3DSOLID")
            Dim fill As SelectionFilter = New SelectionFilter(value)
            Dim optsel As New PromptSelectionOptions()
            optsel.MessageForAdding = "选择实体:"
            Dim selrec As PromptSelectionResult = ed.GetSelection(fill)
            If selrec.Status = PromptStatus.OK Then
                Dim mysel As SelectionSet = selrec.Value
                For Each xobj As SelectedObject In mysel
                    If Not IsDBNull(xobj) Then
                        Dim ent As Solid3d = trans.GetObject(xobj.ObjectId, OpenMode.ForRead)
                        If Not IsDBNull(ent) Then
                            Dim axarae As Double = ent.Area
                            toal = toal + axarae
                            ed.WriteMessage(CStr(toal))
                        End If
                    End If
                Next
            End If
        End Using
    End Sub
End Class
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2012-7-14 22:20:00 | 显示全部楼层
Solid3d居然有Area属性。。。是我想复杂了
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2012-7-14 22:27:00 | 显示全部楼层
[CommandMethod("tt123")]
        public static void Test123()
        {
            var doc = Application.DocumentManager.MdiActiveDocument;
            var db = doc.Database;
            var ed = doc.Editor;
            var resEnt = ed.GetEntity("select a Solid3d:");
            using (var tr = new DBTransaction())
            {
                var s = tr.GetObject(resEnt.ObjectId);
                ed.WriteMessage(s.Area.ToString());
            }
        }
测试的结果没有问题

zimxwx302kv.JPG

zimxwx302kv.JPG

回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-29 19:16 , Processed in 1.187641 second(s), 65 queries .

© 2020-2025 乐筑天下

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