找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1058|回复: 0

[每日一码] C#实现位图文件插入

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2017-6-4 11:00:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
[C#] 纯文本查看 复制代码
private void insertimage(string fname,string bname,Point3d pt,double rot,double xx,double yy)
        {
            Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
            Autodesk.AutoCAD.ApplicationServices.Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            using (Database db = doc.Database)
            {
                using (Transaction tm = db.TransactionManager.StartTransaction())
                {
                    try
                    {
                        ObjectId imageDictID = RasterImageDef.GetImageDictionary(db);
                        if (imageDictID.OldId == 0)
                            imageDictID = RasterImageDef.CreateImageDictionary(db);
                        RasterImageDef rasterImageDef = new RasterImageDef();
                        DBDictionary imageDict = (DBDictionary)tm.GetObject(imageDictID, OpenMode.ForWrite);
                        ObjectId rasterImageDefID;
                        if (imageDict.Contains(bname))
                        {
                            rasterImageDefID = imageDict.GetAt(bname);
                            rasterImageDef = (RasterImageDef)tm.GetObject(rasterImageDefID, OpenMode.ForWrite);
                        }
                        else
                        {
                            rasterImageDefID = imageDict.SetAt(bname, rasterImageDef);
                            rasterImageDef.SourceFileName = fname;
                            rasterImageDef.Load();
                            rasterImageDef.ImageModified = true;
                            rasterImageDef.ResolutionUnits = Unit.Millimeter;
                            tm.AddNewlyCreatedDBObject(rasterImageDef, true);
                        }
                        RasterImage rasterImage = new RasterImage();
                        rasterImage.ImageDefId = rasterImageDef.ObjectId;
                        rasterImage.Orientation = new CoordinateSystem3d(pt, new Vector3d(xx, 0, 0), new Vector3d(0, yy, 0));
                        rasterImage.Rotation = (rot * pi) / 180;
                        BlockTable bt = (BlockTable)tm.GetObject(doc.Database.BlockTableId, OpenMode.ForRead, false);
                        BlockTableRecord btr = (BlockTableRecord)tm.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite, false);
                        btr.AppendEntity(rasterImage);
                        tm.AddNewlyCreatedDBObject(rasterImage, true);
                        tm.Commit();
                        tm.Dispose();
                    }
                    catch (System.Exception e)
                    {
                       System.Windows.Forms.MessageBox.Show(e.ToString());
                    }
                }
            }
        }



[Visual Basic .NET] 纯文本查看 复制代码
Private Function AttachRaster()
    Dim InsertPoint(0 To 2) As Double
    Dim ScaleFactor As Double
    Dim RotAngle As Double
    Dim ImageFileName As String
    Dim RasterObj As AcadRasterImage
    
    InsertPoint(0) = CDbl(txtX.Text)
    InsertPoint(1) = CDbl(txtY.Text)
    InsertPoint(2) = CDbl(txtZ.Text)
    ImageFileName = txtPath.Text
    ScaleFactor = CDbl(txtScale.Text)
    RotAngle = CDbl(txtAngle.Text)
    
    On Error GoTo ErrorHandle
    
    Set RasterObj = ThisDrawing.ModelSpace.AddRaster(ImageFileName, InsertPoint, ScaleFactor, RotAngle)
    ZoomExtents
    Exit Function
ErrorHandle:
    MsgBox Err.Description
    
End Function


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 21:40 , Processed in 0.178647 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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