明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1241|回复: 9

[基础] 如何插入一个形?

[复制链接]
发表于 2015-7-1 14:46 | 显示全部楼层 |阅读模式
  Public Function AddShape(ByVal ShapeName As String, ByVal Position As Point3d, ByVal Size As Double, ByVal Rotation As Double, ByVal WidthFactor As Double) As ObjectId
        Dim Sh As New Shape(Position, Size, Rotation, WidthFactor)
        Sh.Name = ShapeName
        Return AddEntity(Sh, "添加形")
    End Function
Public Function AddEntity(ByVal Ent As Entity, ByVal WriteMis As String) As ObjectId
        Dim db As Database = HostApplicationServices.WorkingDatabase
        Dim btr As BlockTableRecord
        Dim bt As BlockTable
        Dim ObjId As ObjectId
        Dim trans As Transaction = db.TransactionManager.StartTransaction()
        Dim ED As Editor
        ED = Application.DocumentManager.MdiActiveDocument.Editor
        Try
            Using trans
                bt = trans.GetObject(db.BlockTableId, OpenMode.ForWrite, False)
                btr = trans.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite, False)
                ObjId = btr.AppendEntity(Ent)
                trans.AddNewlyCreatedDBObject(Ent, True)
                trans.Commit()
                Return ObjId
            End Using
            trans.Dispose()
        Catch EX As Exception
            trans.Dispose()
            ED.WriteMessage(WriteMis + EX.Message)
        End Try

    End Function
我采用了以上方法,就是不行,提示出错,无法找到形文件
发表于 2015-7-2 19:42 来自手机 | 显示全部楼层
形文件在搜索目录中么
 楼主| 发表于 2017-8-12 08:57 | 显示全部楼层
在的,我先用CAD中的命令LOAD加载了SHP文件,就可以了,但在软件中用什么方法加载SHP文件呢,请大师指点下,
发表于 2017-8-13 09:56 | 显示全部楼层
public void LoadLineTypeFile(string lineTypeName, string filename)
    Autodesk.AutoCAD.DatabaseServices.Database 的成员
 楼主| 发表于 2017-8-13 13:28 | 显示全部楼层
好像不对吧,我要加载的是*.SHX形文件库,然
public void LoadLineTypeFile(string lineTypeName, string filename)
    Autodesk.AutoCAD.DatabaseServices.Database 的成员是加载的字库

还请高手指点下
发表于 2017-8-24 23:46 | 显示全部楼层
Using Trans As Transaction = Doc.TransactionManager.StartTransaction
            Dim StyTab As TextStyleTable = Trans.GetObject(Doc.Database.TextStyleTableId, OpenMode.ForWrite)
            Dim StyRec As New TextStyleTableRecord
            StyRec.IsShapeFile = True
            StyRec.FileName = "形文件的完整路径"
            StyTab.Add(StyRec)
            Trans.AddNewlyCreatedDBObject(StyRec, True)
            Trans.Commit()
        End Using
发表于 2017-8-24 23:47 | 显示全部楼层
上面是加载形文件的方式,加载前需要判断一下是否已经加载,此处略
 楼主| 发表于 2017-9-3 17:32 | 显示全部楼层
我试下,非常感谢
 楼主| 发表于 2018-6-10 15:51 | 显示全部楼层
形文件加载好了,行运下面的代码
Public Function AddShape(ByVal ShapeName As String, ByVal Position As Point3d, ByVal Size As Double, ByVal Rotation As Double, ByVal WidthFactor As Double) As ObjectId
        Dim Sh As New Shape(Position, Size, Rotation, WidthFactor)
        Sh.Name = ShapeName
        Return AddEntity(Sh, "添加形")
    End Function
Sh.Name = ShapeName处出错Autodesk.AutoCAD.Runtime.Exception: eNotInDatabase
 楼主| 发表于 2018-6-10 15:52 | 显示全部楼层
说是形不在数据库中,可有用SHAPE命令可以插入形的啊
有点晕
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-23 20:24 , Processed in 0.343860 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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