AutoCAD C# 程序插入OLE图片

autocad,c#,程序,插入,ole,图片 · 浏览次数 : 17

小编点评

## 生成内容时需要带简单的排版 根据博客文章,以下是生成内容时需要带的排版: 1. **`var fn = @\"D:\\NetDriveDir\\OneDrive\\软件工具\\MNYT.png\";`**:将图片文件路径赋值到 `fn` 中。 2. **`var bm = Bitmap.FromFile(fn);`**:将图片文件加载到 `bm` 中。 3. **`Clipboard.SetImage(bm);`**:将 `bm` 设置剪贴板图片。 4. **`var pt = new Point3d(10, 20, 0);`**:创建一个坐标为 (10, 20, 0) 的点。 5. **`var cmdstrInsetOle = new List<string>(){ \"_pasteclip\", $\"{pt.X},{pt.Y}\"};`**:创建一个包含两项指令的列表,用于设置点的位置。 6. **`var cr = env.acEd.CommandAsync(cmdstrInsetOle.ToArray());`**:创建命令异步,使用指令列表传递给 `acEd` 对象。 7. **`cr.OnCompleted(() =>{...})`**:异步完成事件的回调函数。 8. **`Clipboard.Clear();`**:清除剪贴板。 9. **`using (var tr=env.acDb.TransactionManager.StartTransaction()){`**:开启数据库事务。 10. **`var ole = tr.GetObject(psr.Value[0].ObjectId, OpenMode.ForRead) as Ole2Frame;`**:从事务中获取对象,并将其转换为 Ole2Frame 类型。 11. **`if (ole.Type!= Ole2Frame.ItemType.Embedded)`**:检查对象类型,如果不是嵌入式格式,则进行转换。 12. **`ole.UpgradeOpen();`**:将对象转换为嵌入式格式。 13. **`ole.DowngradeOpen();`**:将对象再次转换为 Ole2Frame 类型。 14. **`tr.Commit();`**:提交事务。 15. **`}`**:退出事务。 需要注意的是,由于图片文件格式可能不同,可能需要进行格式转换。建议在运行代码之前检查图片文件格式,并将格式一致的图片加载到 `bm` 中。

正文

参考博客地址

https://www.cnblogs.com/edata/p/17474704.html

 

var fn = @"D:\NetDriveDir\OneDrive\软件工具\MNYT.png";
var bm = Bitmap.FromFile(fn);
Clipboard.SetImage(bm);
var pt = new Point3d(10, 20, 0);
var cmdstrInsetOle = new List<string>()
{
    "_pasteclip",
    $"{pt.X},{pt.Y}"
};
var cr = env.acEd.CommandAsync(cmdstrInsetOle.ToArray());
cr.OnCompleted(() =>
{
    env.acEd.WriteMessage($"插入old {fn} 完成\n");
    Clipboard.Clear();
    //var psr = env.acEd.SelectLast();
    //using (var tr=env.acDb.TransactionManager.StartTransaction())
    //{
    //    var ole = tr.GetObject(psr.Value[0].ObjectId, OpenMode.ForRead) as Ole2Frame;
    //    if (ole.Type!= Ole2Frame.ItemType.Embedded)
    //    {
    //        ole.UpgradeOpen();

    //        ole.DowngradeOpen();
    //        tr.Commit();
    //    }
    //}
});

 但是无法激活ole需要手工转换下

 

然后双击即可打开old源文件

与AutoCAD C# 程序插入OLE图片相似的内容:

AutoCAD C# 程序插入OLE图片

参考博客地址 https://www.cnblogs.com/edata/p/17474704.html var fn = @"D:\NetDriveDir\OneDrive\软件工具\MNYT.png"; var bm = Bitmap.FromFile(fn); Clipboard.SetIma

C# AutoCAD 利用Editor.CommandAsync 同步监测自带命令的执行情况

#1官方文档并无相关解释:AutoCAD 2023 Developer and ObjectARX Help | Editor.CommandAsync Method | Autodesk #2 上例子,我用自带的命令画一个圆,画完后我要修改它的颜色,此时该如何操作呢,下面是可用的代码 [Comma

AutoCAD VBA 获取字体样式列表

cad中的可用字体样式 获取windows标准字体 Dim winFontsdir As String winFontsdir = VBA.Environ("windir") & "\Fonts\" If winFontsdir <> vbNullString Then Dim shxfl As S

AutoCAD VBNET 当前文档保存

当前文档保存总出问题 现在借助com的方法实现了保存文件 Public Sub TT_SaveDrawing() Dim doc As Document = Application.DocumentManager.Mdi

AutoCAD VBNET 获取曲线在3个基本平面的投影

求取空间任意曲线在xoy/yoz/xoz平面的投影 Public Sub TT_CurveProjected() Dim doc As Document = Application.DocumentManager.

AutoCAD VBNET 曲线求交点

曲线求取点,利用几何库 Public Sub TT_PolyLineCrossCheck() Dim doc As Document = Application.DocumentManager.MdiAct

VBNET AUTOCAD 单行文字OBB有向包围盒的计算

遇到要求单行文字包围和的需求,发现AutoCAD自带的算法仅能求出正交包围盒,如下图所示的粉色矩形 我想获取下图下图所示蓝色矩形的部分及OBB 计算方法图形示例: 下面是完整的代码,其中求D点的坐标p1涉及到向量定比分点公式