明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 238|回复: 3

[基础] CAD2022的开发跟CAD2008的开发差别是不是较大啊?

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
看了下AutoCAD开发基础的书籍,是autocad2008的版本编写的,

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

使用道具 举报

发表于 4 天前 | 显示全部楼层
本帖最后由 你有种再说一遍 于 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();
    }
}
```

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


记得提交事务

评分

参与人数 1金钱 +20 收起 理由
小蛤蟆 + 20 感谢指导

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 4 天前 | 显示全部楼层
对于新手入门只需要处理dll引用而已,
现在不需要你直接引用dll了,去nuget上面引用对应的包就得了.
不明白问问AI.

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

评分

参与人数 1明经币 +1 收起 理由
小蛤蟆 + 1 感谢指导

查看全部评分

回复 支持 反对

使用道具 举报

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

感谢解答,现在加载虚线线型发现总是加载不了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-1 08:56 , Processed in 0.164331 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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