明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 289|回复: 6

[【IFoxCAD】] Ifox由0.7.2版本升級至0.9.3版本的過程操作

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式
本帖最后由 箭头_Row 于 2025-3-30 02:07 编辑

最近將Ifox由0.7.2版本升級至0.9.3版本,編譯中遇到的問題修復及過程如下:
備註:紅色部份為0.7.2代碼,黑色部份為0.9.3新加代碼。

Step01:修改.csproj文件。
一、支持多版本
  1. <TargetFrameworks>Net48;Net80-windows</TargetFrameworks>

二、更改輸出添加版本框架文件夾
  1. <AppendTargetFrameworkToOutputPath>true</AppendTargetFrameworkToOutputPath>

三、添加多版本編譯Condition
  1. <PropertyGroup Condition="'$(TargetFramework)' == 'NET48'">
  2.     <DefineConstants>$(Configuration);acad2024</DefineConstants>
  3.   </PropertyGroup>

  4.   <PropertyGroup Condition="'$(TargetFramework)' == 'Net80-windows'">
  5.     <DefineConstants>$(Configuration);acad2025</DefineConstants>
  6.     <EnableDynamicLoading>true</EnableDynamicLoading>
  7.   </PropertyGroup>

四、添加ifox0.9.3
  1. <ItemGroup>
  2.     <PackageReference Include="IFox.CAD.ACAD" Version="0.9.3-preview4" />
  3.     <PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
  4.     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  5.     <PackageReference Include="Z.ExtensionMethods" Version="2.1.1" />
  6.     <PackageReference Include="System.Data.SQLite.Core" Version="1.0.119" />
  7.   </ItemGroup>


Step02:修改DBTrans.Top
DBTrans acTrans = DBTrans.Top;
DBTrans acTrans = DBTrans.GetTop();

Step03:修改Keywords.**.GetDesc();
private string _visibility = Keywords.二个直角.GetDesc();
private string _visibility = Keywords.二个直角.GetDescription();

Step04:修改動態塊屬性可見性函數名稱;
br.ChangeDynamicBlockProperty(pro);
br.ChangeBlockProperty(pro);

Step05:修改jig.Entitys的複數錯誤;
if (jig.Entitys.Length <= 0)
if (jig.Entities.Length <= 0)

Step06:取消jig設置的正交形參;
moveJig.SetOptions(basePoint, msg: "指定尺寸线位置", orthomode: false);
moveJig.SetOptions(basePoint, msg: "指定尺寸线位置");

Step07:高版本取消jig拖拽的this關鍵字,提示過時;
var prDrag = moveJig.Drag();
var prDrag = Env.Editor.Drag(moveJig);

Step08: TypedValueList已更改為protect;
            
  1. TypedValueList values =
  2.                 new()
  3.             //TypedValueList values = new()
  4.             //{
  5.             //    { (int)DxfCode.ExtendedDataRegAppName, regAppName },
  6.             //    { (int)DxfCode.ExtendedDataAsciiString, newInfo },
  7.             //};
  8.             //id.AddXData(regAppName, values); // 为实体添加应用程序名的扩展数据

  9.             // 2025-03-26  此处修改为ifox 0.9提供的方法
  10.             using RegAppTable regTable = (RegAppTable)id.Database.RegAppTableId.GetObject(OpenMode.ForWrite);
  11.             //如里不存在名为regAppName的记录,则创建新的注册应用程序表记录
  12.             if (!regTable.Has(regAppName))
  13.             {
  14.                 RegAppTableRecord regRecord = new()
  15.                 {
  16.                     { (int)DxfCode.ExtendedDataRegAppName, regAppName },
  17.                     { (int)DxfCode.ExtendedDataAsciiString, newInfo },
  18.                 };

  19.             id.AddXData(regAppName, values); // 为实体添加应用程序名的扩展数据
  20.                     Name = regAppName, // 设置扩展数据的名字
  21.                 }; // 创建一个注册应用程序表记录用来表示扩展数据

  22.                 regTable.Add(regRecord); // 在注册应用程序表加入扩展数据,并通知事务处理
  23.                 id.Database.TransactionManager.AddNewlyCreatedDBObject(regRecord, true);
  24.             }

  25.             using var ent = tr.GetObject(id, OpenMode.ForWrite);
  26.             using var _ = ent.XData = new XDataList()
  27.             {
  28.                 { (int)DxfCode.ExtendedDataRegAppName, regAppName },
  29.                 { (int)DxfCode.ExtendedDataAsciiString, newInfo },
  30.             };
  31.             regTable.DowngradeOpen();
  32.             ent.DowngradeOpen();




回复

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
本帖最后由 箭头_Row 于 2025-3-30 01:27 编辑

Step09: 取消無效的global引用;
global using System.Web.Script.Serialization;
//global using System.Web.Script.Serialization;

Step10: 0.9.3取消了函数.OfType<BlockReference>();
        // 遍歷單行文字
        var ids = psr.Value.GetObjectIds().OfType<DBText>();

        // 过滤出單行文字 & 屬性塊
        var allowType01 = RXObject.GetClass(typeof(DBText));
        var allowType02 = RXObject.GetClass(typeof(BlockReference));
        var ids = psr
            .Value.GetObjectIds()
            .Where(objId =>
                objId.ObjectClass.IsDerivedFrom(allowType01) || objId.ObjectClass.IsDerivedFrom(allowType02)
            );

Step11: 更改文檔鎖定提示字;
using DBTrans tr = new(doclock: true); // 不锁定提示错误:elnvalidInput
using DBTrans tr = new(docLock: true); // 不锁定提示错误:elnvalidInput


Step12: 更改塊屬性字典值形參類型為Dictionary<string, object> ;
Dictionary<string, string> pro = new()
Dictionary<string, object> pro = new()
{
    ["家具平面布置图"] = item,
    ["10~11F-01"] = GetCategoryByArDescription<StatusKv>(item) + "-01",
};

  newBr.ChangeBlockProperty(pro); // 更新普通块的属性值

Step13: AcadPreferencesDisplay com接口名稱變更;
#if acad2025
    public AcadApplication? Application => null;
#else
    public IAcadApplication? Application => null;
#endif

Step14: 0.9.3取消了MathEx類,暫不知更改為哪個函數,故手動添加MathEx類;
public static class MathEx
{
    // todo:2025-03-26  取消此方法,使用Math.PI
    /// <summary>
    /// 转换弧度到角度
    /// </summary>
    /// <param name="rad">弧度值</param>
    /// <returns>角度(10进制小数)</returns>
    public static double ConvertRadToDeg(double rad) => rad / Math.PI * 180;

    /// <summary>
    /// 转换角度(10进制小数)到弧度
    /// </summary>
    /// <param name="deg">角度</param>
    /// <returns>弧度</returns>
    public static double ConvertDegToRad(double deg) => deg / 180 * Math.PI;
}

回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
本帖最后由 箭头_Row 于 2025-3-30 01:16 编辑

NET8.0的支持路徑書寫如下:

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
本帖最后由 箭头_Row 于 2025-3-30 01:16 编辑

NET4.8的支持路徑書寫如下:

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
本帖最后由 箭头_Row 于 2025-3-30 01:54 编辑

文件輸出優化:設置輸出文件夾名稱及SQLite仅输出win-x64引用的設置。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 01:47 | 显示全部楼层
本帖最后由 箭头_Row 于 2025-3-30 01:52 编辑

Dll引用優化:AcMPolygonMGD.dll引用禁止複製至輸出文件夾下。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 昨天 10:44 | 显示全部楼层
前来支持,感谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-1 09:41 , Processed in 0.223199 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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