小蛤蟆 发表于 2025-3-28 16:08:24

CAD2022的开发跟CAD2008的开发差别是不是较大啊?

看了下AutoCAD开发基础的书籍,是autocad2008的版本编写的,

而现在的版本是autocad2022, 例子程序不能编译。这是什么原因啊?

你有种再说一遍 发表于 2025-3-28 17:16:21

本帖最后由 你有种再说一遍 于 2025-3-29 16:18 编辑

小蛤蟆 发表于 2025-3-28 17:14
感谢解答,现在加载虚线线型发现总是加载不了

在C#中通过CAD API加载虚线线型,可以结合AutoCAD的.NET开发接口实现。以下是关键步骤和注意事项:

1. 加载线型文件
使用`Database`对象的`LoadLineTypeFile`方法加载线型文件(.lin):
```csharp
using (Transaction tr = db.TransactionManager.StartTransaction())
{
    using LinetypeTable ltTable = tr.GetObject(db.LinetypeTableId, OpenMode.ForWrite) as LinetypeTable;
    db.LoadLineTypeFile("ACAD_ISO02W100", "acad.lin"); // 示例线型
    tr.Commit();
}
```

2. 设置当前线型
通过`LinetypeTableRecord`将虚线设为当前线型:
```csharp
using (Transaction tr = db.TransactionManager.StartTransaction())
{
    using BlockTableRecord btr = tr.GetObject(btBlockTableRecord.ModelSpace, OpenMode.ForWrite) as BlockTableRecord;
    Line line = new Line(startPoint, endPoint);
    line.Linetype = "ACAD_ISO02W100"; // 指定虚线线型
    btr.AppendEntity(line);
    tr.AddNewlyCreatedDBObject(line, true);
    tr.Commit();
}
```

3. 调整线型比例
通过`LTSCALE`系统变量或实体属性调整虚线显示比例:
csharp
// 全局比例
Application.SetSystemVariable("LTSCALE", 10.0);
// 或单个实体比例
line.LinetypeScale = 2.0;


4. 注意事项
- 线型文件路径:确保.lin文件位于CAD支持路径或指定完整路径。
- 符号形文件:某些线型依赖.shx文件(如`ltypeshp.shx`),需确认这些文件在CAD的`Fonts`目录中。
- 版本兼容性:不同CAD版本可能对线型支持有差异,建议测试目标环境。

完整示例代码
```csharp
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;

public void CreateDashedLine()
{
    Document doc = Application.DocumentManager.MdiActiveDocument;
    Database db = doc.Database;

    using (Transaction tr = db.TransactionManager.StartTransaction())
    {
      // 加载线型
      db.LoadLineTypeFile("ACAD_ISO02W100", "acad.lin");

      // 创建虚线
      using BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
      using BlockTableRecord btr = tr.GetObject(btBlockTableRecord.ModelSpace, OpenMode.ForWrite) as BlockTableRecord;

      Line dashedLine = new Line(new Point3d(0, 0, 0), new Point3d(100, 100, 0));
      dashedLine.Linetype = "ACAD_ISO02W100";
      dashedLine.LinetypeScale = 5.0; // 调整比例

      btr.AppendEntity(dashedLine);
      tr.AddNewlyCreatedDBObject(dashedLine, true);
      tr.Commit();
    }
}
```

如需进一步解决显示问题(如虚线显示为实线),可检查视图缩放比例或图层状态。


记得提交事务

你有种再说一遍 发表于 2025-3-28 16:38:10

对于新手入门只需要处理dll引用而已,
现在不需要你直接引用dll了,去nuget上面引用对应的包就得了.
不明白问问AI.

你如果说其他不一样的话,那就很多了,
例如并行库随着net版本完善了,
例如native AOT编译...

小蛤蟆 发表于 2025-3-28 17:14:40

你有种再说一遍 发表于 2025-3-28 16:38
对于新手入门只需要处理dll引用而已,
现在不需要你直接引用dll了,去nuget上面引用对应的包就得了.
不明白 ...

感谢解答,现在加载虚线线型发现总是加载不了
页: [1]
查看完整版本: CAD2022的开发跟CAD2008的开发差别是不是较大啊?