马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
[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
|