MarekRatajczak2024/AlfaCAD
GitHub: MarekRatajczak2024/AlfaCAD
一款支持 2D 制图与结构/动力分析的通用桌面 CAD 工具,帮助用户在离线环境中完成图纸设计与专业计算。
Stars: 4 | Forks: 2
```markdown
***AlfaCAD 被构想为一个用于创建技术图纸的简单、通用程序。然而,“通用”并不意味着“无所不能”。它是一把瑞士军刀,而不是一箱工具,其中大多数对用户来说是秘密,可能永远不会被使用。***
***Linux*** 从 AlfaCAD-CC2.zip 文件中提取 CC2 文件夹到主家目录,或任何其他我们从此称之为“CC2 根文件夹”的文件夹。 CC2 代表“Cooking CAD 2”,其中“2”只是版本号。我们在制作 CAD。 从 AlfaCAD-Linux-Pack.tar 提取所有压缩包到任意临时文件夹,然后将它们各自提取到创建 CC2 根文件夹的位置。最终你会得到如下文件夹结构: allegro5-4.4.3
CavalierContours
CC2
clip
Frame3DDa
glyph-keeper
kdialog-master
libharu-master
libpng1637
libredwg-master
potrace-1.16
zlib ***编译 AlfaCAD 主程序***(AlfaCAD、AlfaCADPL、AlfaCADUA、AlfaCADES) CC2/Source 包含 CmakeLists.txt 文件。
此文件由 cmake 用于编译整个程序。
所以请安装你的 Linux 所需的 cmake,无论如何你都需要它。
作者使用的是 Jetbrains 的 CLion IDE。CLion 是商业工具,但价格便宜(每月几美元),而且是我见过的最好的 IDE。不过,你可以使用任何你喜欢的 IDE。
AlfaCAD 应使用 cland 和 clang++ 编译器进行编译,这是为了与 Windows 兼容,Windows 在 Visual Studio 2022 中也默认使用这种 C 和 C++ 实现。这就是我在 Windows 上编译 AlfaCAD 所用的方法。 使用 CC2/Source/***CmakeLists.txt*** 文件作为项目配置文件。 CC2/Source/***CmakeLists.txt*** 包含 8 个编译配置: (英文版) - AlfaCAD Debug - AlfaCAD Release (波兰语版) - AlfaCADPL Debug - AlfaCADPL Release (乌克兰语版) - AlfaCADUA Debug - AlfaCADUA Release (西班牙语版) - AlfaCADES Debug - AlfaCADES Release 如果依次编译,二进制文件将存储在相应的文件夹中:
CC2/Source/cmake-build-debug
CC2/Source/cmake-build-release
CC2/Source/cmake-build-debug_pl
CC2/Source/cmake-build-release_pl
以此类推。 你可能可以直接编译,无需重新编译其他库,因为必要的静态或动态链接库已保留在相关文件夹中。
不过,你还需要以下第三方或系统库: - X11 - Xrandr - ncurses - Xm - Xt - fltk - cups - xcb - ruby - curl - "/usr/lib/libQt5Core.so" - "/usr/lib/libQt5Widgets.so" - "/usr/lib/libQt5Gui.so" - "/usr/lib/libQt5InputSupport.a" - "/usr/lib/libQt5PrintSupport.so" - "/usr/lib/libQt5Positioning.so" - "/usr/lib/libKF5WidgetsAddons.so" - "/usr/lib/libKF5TextWidgets.so" - "/usr/lib/libKF5I18n.so" 请安装尚未安装的必要软件包。除了这些库之外,还会链接以下库: clip/cmake-build-release/libclip.a
glyph-keeper/obj/libglyph-allegs.a
libharu-master/cmake-build-release/src/libhpdfs.a
libpng1637/cmake-build-release/libpng.a
allegro5-4.4.3/lib/liballeg.so // 默认
allegro5-4.4.3/lib/liballeg.a // 可选
allegro5-4.4.3/lib/libjpgalleg.so // 默认
allegro5-4.4.3/lib/libjpgalleg.a // 可选
zlib/libz.a 这些文件夹的位置必须与 CC2 文件夹平行,因为这是 CmakeLists.txt 中的设置:
"${CMAKE_CURRENT_SOURCE_DIR}/../../clip/cmake-build-release/libclip.a"
以此类推。 ***AlfaCAD***
***Windows*** 从 AlfaCAD-CC2.zip 文件中提取 CC2 文件夹到主家目录,或任何其他我们从此称之为“CC2 根文件夹”的文件夹。 CC2 代表“Cooking CAD 2”,其中“2”只是版本号。我们在制作 CAD。 从 AlfaCAD-Windows-Pack.tar 提取所有压缩包到任意临时文件夹,使用命令:
tar -xvzf AlfaCAD-Windsows-Pack.tar -C New-Location
其中 New-Location 需替换为任意临时文件夹名称,然后将每个压缩包提取到创建 CC2 根文件夹的位置。最终你会得到如下文件夹结构: allegro-4.4.3.1
allegro5-4.4.4
CavalierContours
CC2
Frame3DDa
glyph-keeper
libharu-master
libpng1637
potrace-1.16
pyw
qt5
zlib libredwg-master 文件夹在 Windows 版本中不存在。该文件夹包含 DWG/DXF 转换的源代码,因为它是未经修改地提供给 AlfaCAD 的,所以升级这些工具最简单的方式是直接从 获取。
AlfaCAD 安装包包含适用于 32 位和 64 位版本的 dwg2dxf.exe 和 dxf2dwg.exe 程序。
***编译 AlfaCAD 主程序***(AlfaCAD4Win、AlfaCAD4Win64、AlfaCADPL4Win、AlfaCADPL4Win64、AlfaCADUA4Win、AlfaCADUA4Win64、AlfaCADES4Win、AlfaCADES4Win64)
CC2 包含 VSProjects 文件夹,其中包含 4 个子文件夹:
AlfaCAD32-master
AlfaCAD64-master
AlfObjects32
AlfObjects64 每个文件夹都包含 \*.sln 文件,即 Visual Studio 2022 解决方案,因此: - AlfObjects64 文件夹包含用于 AlfaCAD 64 位辅助 DLL 文件的工程文件 - AlfObjects32 文件夹包含用于 AlfaCAD 32 位辅助 DLL 文件的工程文件 AlfaCAD 需要辅助模块 AlfaObjects.lib(库)和 AlfaObjects.dll(动态链接库)。该库用于在多个 AlfaCAD 实例同时运行时进行进程间操作,避免打开与特定文件类型关联的程序时产生不必要的多个实例。它也支持拖放操作。 无需编译这些工程,库文件已经存在。 - AlfaCAD64-master 文件夹包含用于 AlfaCADxx4Win64.exe 的主工程
作为 64 位应用程序,其中 xx 为语言版本,因此是非英文版、PL-波兰语、UA-乌克兰语、ES-西班牙语 - AlfaCAD32-master 文件夹包含用于 AlfaCADxx4Win.exe 的主工程
作为 32 位应用程序,其中 xx 为语言版本,因此是非英文版、PL-波兰语、UA-乌克兰语、ES-西班牙语 AlfaCAD64 和 AlfaCAD64 解决方案各包含 8 个编译配置: - Debug - Release - Debug_PL - Release_PL - Debug_UA - Release_UA - Debug_ES - Release_ES 在 AlfaCAD64 项目中,目标应选择为 x64,AlfaCAD32 中选择 x86 或 Win32。 每个配置都会生成二进制文件并存储在以下文件夹中: - Debug - Release - DebugPL - ReleasePL 等等 你可能可以直接编译,无需重新编译其他库,因为必要的静态或动态链接库已保留在相关文件夹中。 不过,你还需要以下第三方或系统库,这些库在 Windows 软件开发工具包中始终可用:[https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/) 请安装它。 除了这些库,还会链接以下库: allegro-4.4.3.1\allegro\build\lib\RelWithDebInfo\alleg44.lib
allegro5-4.4.4\build\lib\RelWithDebInfo\alleg44.lib
allegro5-4.4.4\build\lib\RelWithDebInfo\jpgalleg.lib
..\AlfObjects64\Release64\AlfaObjects.lib
..\AlfObjects32\Release\AlfaObjects.lib
glyph-keeper\_v2\obj\glyph-allegs.lib
glyph-keeper32\obj\glyph-alleg32.lib
glyph-keeper64\obj\glyph-allegs.lib
libharu-master\src\build32\Release\hpdf.lib
zlib\build32\Release\zlibstatic.lib
lpng1637\projects\vstudio32\Release\libpng16.lib
qt5\qt5-build\qtbase\lib\Qt5Gui.lib
qt5\qt5-build\qtbase\lib\Qt53DCore.lib
qt5\qt5-build32\qtbase\lib\Qt5Gui.lib
qt5\qt5-build32\qtbase\lib\Qt53DCore.lib
allegro-4.4.3.1\allegro\build\ALLEGRO.sln
只需编译两个工程:
- allegro Release 或 RelWithDebInfo x64 - jpgalleg Release 或 RelWithDebInfo x64 这将生成:
allegro-4.4.3.1\allegro\build\lib\RelWithDebInfo\alleg44.lib 64位
allegro-4.4.3.1\allegro\build\lib\RelWithDebInfo\jpgalleg.lib 64位
以及
allegro-4.4.3.1\allegro\build\lib\RelWithDebInfo\alleg44.dll 64位
allegro-4.4.3.1\allegro\build\lib\RelWithDebInfo\jpgalleg.dll 64位 allegro5-4.4.4\build\ALLEGRO.sln
allegro RelWithDebInfo Win32
jpgalleg RelWithDebInfo Win32 这将生成:
allegro5-4.4.4\build\lib\RelWithDebInfo\alleg44.lib 32位
allegro5-4.4.4\build\lib\RelWithDebInfo\jpgalleg.lib 32位
以及
allegro5-4.4.4\build\lib\RelWithDebInfo\alleg44.dll 32位
allegro5-4.4.4\build\lib\RelWithDebInfo\jpgalleg.dll 32位 ***glyph-keeper*** glyph-keeper 是由 Kirill Kryukov 创建的库,帮助将 FreeType(TrueType)字体引入 AlfaCAD。我很高兴能用到他的作品。该库经过 AlfaCAD 作者的轻微修改,并与更新的 FreeType 库一起测试。 该库有 1 个 Linux 版本和 3 个 Windows 版本。 Linux 下:
glyph-keeper 文件夹 Windows 下:
glyph-keeper\_v2 稍作实验的版本,基于升级的 FreeType
glyph-keeper32 32 位标准库
glyph-keeper64 64 位标准库 当前配置中,glyph-keeper\_v2 用于 64 位 AlfaCAD,glyph-keeper32 用于 32 位版本。 Linux 下使用 make:
make /f Makefile.GNU.all TARGET=ALLEGRO ALLEGRO\_STATICLINK=1 Windows 下使用 MinGW(请遵循说明):
nmake /f Makefile.MSVC71 TARGET=ALLEGRO ALLEGRO\_STATICLINK=1 64 位:
文件夹 glyph-keeper64 或 glyph-keeper\_v2 32 位:
文件夹 glyph-keeper32 你会得到 glyph-allegs.lib,它被静态链接到 AlfaCAD。 ***libharu*** libharu 是由 Takeshi Kanno 和 Antony Dovgal 开发的用于生成 PDF 的库。
它被用于将图纸打印为 PDF 格式,以及展示静态和动态分析的结果。 ***Linux:***
libharu-master 文件夹中有 CmakeLists.txt 文件,这是 cmake 的项目配置文件(或者我选择的 CLion IDE)。有两个配置:Debug 和 Release。 它们将生成静态链接库,例如:
/home/marek/libharu-master/cmake-build-release/src/libhpdfs.a 直接编译即可。 ***Windows:***
有 libharu-master 文件夹。
64 位 VS 项目:
"libharu-master\src\build\Project.sln"
选择 Release x64 后,你会得到:
"libharu-master\src\build\Release\hpdf.lib" 32 位 VS 项目:
"libharu-master\src\build32\Project.sln"
选择 Release Win32 后,你会得到:
"libharu-master\src\build32\Release\hpdf.lib" ***qt5*** 该库用于 AlfaCAD 中的四边形变换,主要用于特定的绝缘填充变换,但不仅限于此。 ***Linux:*** 只需安装 Qt5。 将使用以下库: - "/usr/lib/libQt5Core.so" - "/usr/lib/libQt5Widgets.so" - "/usr/lib/libQt5Gui.so" - "/usr/lib/libQt5InputSupport.a" - "/usr/lib/libQt5PrintSupport.so" - "/usr/lib/libQt5Positioning.so" ***Windows:*** Windows 包中有一个 qt5 文件夹,包含最小包和所有必需的头文件与库。无需在 Windows 上安装 Qt5,除非你想对 AlfaCAD 进行重大修改。 ***zlib*** 这是一个用于 Windows 和 Linux 的压缩库。
该库将被静态链接到 AlfaCAD。 ***Linux:*** 按照说明获取: zlib/libz.a ***Windows:***
64位:
VS 解决方案:zlib\build\zlib.sln
zlibstatic Release x64
你会得到:
zlib\build\Release\zlibstatic.lib 32位:
VS 解决方案:zlib\build32\zlib.sln
zlibstatic Release Win32
你会得到:
zlib\build32\Release\zlibstatic.lib ***libpng1637*** PNG 参考库,由多位作者开发 [https://sourceforge.net/projects/libpng/files/libpng16/1.6.37/](https://sourceforge.net/projects/libpng/files/libpng16/1.6.37/)。请阅读 LICENCE 文件以了解版权声明、免责声明和许可。 ***Linux:***
有 cmake/CLion 配置文件:libpng1637/CmakeLists.txt
编译配置是 png-static Release。 你会得到:
libpng1637/cmake-build-release/libpng.a ***Windows:***
64位:
VS 解决方案:"lpng1637\projects\vstudio\vstudio.sln" 项目:zlib Release x64
以及:libpng Release x64
你会得到:
"lpng1637\projects\vstudio\x64\Release\libpng16.lib"
"lpng1637\projects\vstudio\x64\Release\libpng16.dll" 32位:
VS 解决方案:"lpng1637\projects\vstudio32\vstudio.sln" 项目:zip Release x86
以及:libpng Release x86
你会得到:
"lpng1637\projects\vstudio32\Win32\_DLL\_Release\libpng16.lib"
复制到:
"lpng1637\projects\vstudio32\Release\libpng16.lib" 并复制:
"lpng1637\projects\vstudio32\Win32\_DLL\_Release\libpng16.dll"
复制到:
"lpng1637\projects\vstudio32\Release\libpng16.dll" ***CavalierContours*** CavalierContours 是由 jbuckmccready 开发的小型库,用于处理同时包含直线和恒定半径弧段的二维多段线。这个 C++ 库目前未积极开发,开发工作正在 Rust 中继续。它被 AlfaCAD 用于支持多段线的“偏移”编辑功能。 无需编译,源文件已包含在 AlfaCAD 项目中。 ***clip*** 这是由 David Capello 开发的库,版权 (c) 2015-2022,用于复制/检索剪贴板/粘贴板中的内容。 该库仅在 AlfaCAD 的 Linux 版本中使用。 有 clip/CmakeLists.txt 文件用于 cmake(或我选择的 CLion),并选择配置:
clip Release
它将生成 clip/cmake-build-release/libclip.a ***kdialog4alfa*** 这是一个仅用于 Linux 版本的支持程序。与原始 kdialog [https://develop.kde.org/docs/administration/kdialog/](https://develop.kde.org/docs/administration/kdialog/) 类似,该程序由 Matthias Hoelzer 于 1998 年创建,其他作者包括 Tristan Miller(最后维护者,2020 年),在 GPL-2.0 许可下发布。 AlfaCAD 作者扩展了该版本,增加了用于创建单行或多行文本的特殊对话框,并带有多个属性,作为 AlfaCAD 的一部分,但作为一个独立程序调用,以支持基于 Qt 库的高级文本操作。 编译非常简单: 在 kdialog-master/build 文件夹中运行: make clean make 它将生成:kdialog-master/build/bin/kdialog4alfa 请不要用更新的 kdialog 版本覆盖 kdialog-master 文件夹,否则无法与 AlfaCAD 一起使用。相关文件已修改:widgets.cpp、kdialog.cpp、NcFramelessHelper.cpp、NcFramelessHelper.h、widgets.h、utils.cpp、utils.h ***libredwg*** 这是一个开源程序,以原始版本用于读取 DWG 文件(原生 Autocad 绘图文件):
因为 libredwg 以原始形式使用,它不会将 DWG 文件转换为 AlfaCAD 文件;这项任务仍由 AlfaCAD 作者负责,改为将 DWG 转换为可交换的 DXF 格式,然后 AlfaCAD 处理读取 DXF 的方式与导入 DXF 文件时相同。
***Linux 版本:***
libredwg-master/CmakeLists.txt 是 cmake(或者我选择的 IDE)的配置文件。
选择:dwg2dxf Release 生成:libredwg-master/cmake-build-release/dwg2dxf 选择:dxf2dwg Release 生成:libredwg-master/cmake-build-release/dxf2dwg 同时生成大量共享库文件:libredwg-master copy/cmake-build-release/libredwg.so,必须包含在 AlfaCAD 文件夹中以转换图纸。 ***Windows 版本:*** 因为存在预编译版本且持续开发中,更简单的方式是直接从以下位置下载 64 位和 32 位版本:
LibreDWG 一直在开发中,没有理由不使用该程序的最新版本,因此 dwg2dxf(或 Windows 下的 dwg2dxf.exe)可以成功替换安装包中提供的版本。LibreDWG 编写精良,能够读取许多版本的 Autocad 以及其他使用 DWG 格式的 CAD 程序。需要记住的是,DWG 格式规范未公开,因此该程序的开发过程实际上是一种所谓的“逆向工程”。
***potrace-1.16***
Potrace 是一个用于追踪位图的工具,这意味着将位图转换为平滑、可缩放的图像。
由 Peter Selinger 编写,版权 (C) 2001-2019,已由 AlfaCAD 作者扩展了一个模块,用于生成原生 AlfaCAD 块,以便将其作为包含折线和圆弧的矢量块插入到图纸中。
添加了 backend_alx.h 和 backend_alx.files,并修改了 main.c 文件。 ***Linux:***
在 potrace-1.16 文件夹中:
make clean
make 它将生成:
potrace-1.16/src/potrace 和
potrace-1.16/src/mkbitmap ***Windows:***
VS 解决方案:potrace-1.16\potrace.sln 64位:
项目:potrace Release_64 x64
生成:
potrace-1.16\x64\Release_64\potrace.exe
potrace-1.16\x64\Release_64\mkbitmap.exe(不会更改) 32位:
项目:potrace Release Win32
生成:
potrace-1.16\Release\potrace.exe
potrace-1.16\Release\mkbitmap.exe(不会更改) ***image2image***
***image2jpg***
***image2pcx***
***image2png***
***jpg2noexif*** 这些程序用于在不同图形格式之间转换图像,并用于图像文件导入功能,以及打印图纸或保存为图形文件的功能。
这些程序在 Linux 下以 Python 脚本(.py)形式存在,在 Windows 下以编译形式(.exe)存在。 编译版本已包含以简化安装,因为 Windows 上并非总是安装 Python,而 Linux 上通常已安装。
Python 需要 pillow 库以便运行脚本。
*.pyw 文件(Windows 下与 *.py 等效)归档在 pyw 文件夹中,可以替换编译版本,这需要对程序进行少量更改,方式与 Linux 版本类似。 ***Frame3DDa*** Frame3DD 是自由开源软件,用于 2D 和 3D 框架及桁架的静力和动力分析,弹性与几何刚度均可。版权 (C) 1992-2009 Henri P. Gavin。 [***https://frame3dd.sourceforge.net/***](https://frame3dd.sourceforge.net/) Frame3DD 的原始版本经过 AlfaCAD 作者修改,因此文件夹名称改为 Frame3DDa。 由于所做的修改,附带项目的 Frame3DD 版本是唯一能与 AlfaCAD 协同工作的版本。如果希望修改此程序,请从提供的版本开始。 顺便说一句:Frame3DD 不再由其作者积极开发,因此我们可以假设目前最新的版本就是 AlfaCAD 作者修改的那个版本。 主要修改: 1. 修正了节点之间加载元素跨度有限时的均匀分布载荷。 2. 修正了节点之间跨度有限时单元长度上的内力。 3. 更改了在节点之间跨度有限时确定横截面内力的单元长度划分方法。 4. 增加了以优化格式生成动态分析结果,用于 AlfaCAD 中的振动模式动画。 ***Linux:*** Frame3DDa/CmakeLists.txt 是 cmake(Clion 作为我选择的 IDE)的配置文件。 使用 frame3dd Release 配置进行编译。 它将生成:Frame3DDa/cmake-build-release/frame3dd 此程序必须复制到主 AlfaCAD 文件夹中(如果进行了任何修改)。 ***Windows:*** frame3dda 在 Frame3DDa\src\Makefile 中可以选择,或使用 Frame3DDa\src\Makefile32 替代 32 位 \# 64 位(使用 Strawberry,如果已安装 perl)
LDFLAGS = -lm
\# 32 位(不使用 Strawberry,如果已安装 perl,则禁用)
\#LDFLAGS = -lm -m32 从:"Frame3DDa\src" 64位: make clean
make 32位: make -f Makefile32 clean
make -f Makefile32 它将生成:Frame3DDa\src\frame3dd.exe 此程序必须复制到主 AlfaCAD 文件夹中(如果进行了任何修改)。 ***AlfaCAD 的历史*** AlfaCAD 的前身大约在 1992 年使用非常原始的 16 位 Borland C 编译器和简单的 BGI(Borland 图形接口)图形库编写,该库仅有 16 种颜色可供选择。该程序在欧洲中心创建,是当时昂贵且复杂的 CAD 程序的廉价替代品。它被称为 AlfCAD,名称的根源来自一个角色 Alf,一个 1984 年由 Paul Fusco 为美国电视系列剧 "Alf" 创建的外星木偶。因为 Alf 很聪明。 这个简单的程序在两位作者团队解散后(包括当代 AlfaCAD 的作者),使用更先进的工具从头重写,包括 32 位 DJGPP 编译器和 GRX 图形库。最终,在 20 世纪末,Allegro 库被实现,最初作为 32 位扩展 DOS 应用程序,最后作为使用 Visual C 编译器的原生 32 位 Windows 应用程序。在此期间,该程序被克隆为一个用于工业自动化设计(Aster)的程序,以及独立应用程序,用于支持地下污水、水和燃气网络的设计(AlfCAD-Profile),以及其他支持钢筋混凝土板设计甚至使用膨胀粘土块技术设计房屋的克隆。 随后,经济危机和个人危机使作者远离程序开发超过 16 年,从事其他完全不同的事情,在另一个地方、国外,远离其程序的用户。随着时间的推移,由于缺乏作者支持,这些程序被其他程序取代。在此期间,作者从事支持衍生品交易所交易程序的发展,后来是加密货币。最终,作者本人作为一名工程师,需要暂时回归工程制图,当道路再次转弯时,他发现了其他目标。对免费下载软件可用性的失望最终促使作者从旧硬盘中取出源代码,于是诞生了以新形式复兴该程序的概念。 不要将该程序称为可怜巴巴的 Phoenix-CAD,尽管它确实是从灰烬中重生,但它的名字让人想起其创始人,与外星生物无关。相反,这个名字暗示它是一种基础的 CAD,就像希腊字母的第一个字母。在数字命理学中,字母 A 所代表的能量与自信、独立、勇气和领导力等理念共鸣。它是坚定而有目的的。根据古老的数字命理学科学,字母 A(以及希腊字母 Α 或 α,其数值为 1)与领导力、个性和自我表达的品质相关联。它代表开始、主动性和开拓精神。好吧,足够好了。 Alfa 的拼写偏离英语规范,使用 f 而非 ph,正如大多数欧洲语言中那样,因为某些语言的母语者可能无法正确发音 Alpha 中的 ph(他们可能不知道 ph 应发音为 f)。AlfaCAD 的作者采用了北约音标字母中的这一规则。 好主意永远不会消亡…… 2020 年初,作者开始致力于 AlfaCAD,并在年底开始开发 Allegro 4 库的 64 位版本,而当时并不存在。这在 2020 年平安夜实现,第二天 AlfaCAD 已经是 64 位了。作者仍然维护 32 位版本作为遗产,尽管维护它可能已经没有意义了,每个人都在使用 Windows 的 64 位版本。 2022 年,作者开始将 AlfaCAD 作为带有 Xlib 图形(X11、XOrg)的原生 Linux 应用程序进行开发。 今天,在与 Arch Linux、KDE、CLion 合作超过 2 年后,Linux 版 AlfaCAD 已获得关键发行版的地位,整个程序的开发过程已迁移到 Linux,仅使用 Visual Studio 2022 Community Edition 在 Windows 上重新编译代码(Windows 的 cmake/CLion 设置方案正在构建中)。 为了向后兼容,程序可以加载以前程序创建的图纸文件并将其转换为 AlfaCAD 格式。同样的情况也适用于绘图块,因此读取图纸和块的过程有些复杂。许多包含在程序安装包中的示例图纸来自以前的程序。 由于部分代码编写时间较早,当时作者并未想到有一天会发布代码并使其可供全世界使用,因此一些注释使用作者的母语编写,部分变量名称虽然具有象征性,但通过名称暗示其用途。较新的代码部分在变量名称(如果具有可读性而非仅符号)和注释中同时使用英文。源文件名也是如此。 作者将努力改进代码的共享部分,但也深知在自动翻译时代,这种障碍仅是表面现象。 在任何情况下,如果尝试编译程序失败,尽管尽了最大努力并满足了上述所有要求,或部分代码对您来说无法理解或可能存在错误,请不要犹豫,通知我。总会有解决方案。这是我的电子邮件地址:
一个即用型的安装包,包含 4 种语言版本、更新以及最新扩展的描述,可以从 [https://alfacad.net](https://alfacad.net/) 下载,4 种语言,即常用的英文、作者母语波兰语、乌克兰语(因为即使只有一个房屋在战后使用 AlfaCAD 重建,这也值得做)以及西班牙语(因为我正在学习)。
享受 AlfaCAD
作者
Marek Ratajczak
2024 年 10 月
*最终,我做了我一直认为我会做的事。我不仅仅是在利用开源,我也为它做出了贡献。* *现在如果你喜欢,可以雇佣我。我准备参与项目,我的专业知识足够好。你可以查看我的代码。* ```
***Linux*** 从 AlfaCAD-CC2.zip 文件中提取 CC2 文件夹到主家目录,或任何其他我们从此称之为“CC2 根文件夹”的文件夹。 CC2 代表“Cooking CAD 2”,其中“2”只是版本号。我们在制作 CAD。 从 AlfaCAD-Linux-Pack.tar 提取所有压缩包到任意临时文件夹,然后将它们各自提取到创建 CC2 根文件夹的位置。最终你会得到如下文件夹结构: allegro5-4.4.3
CavalierContours
CC2
clip
Frame3DDa
glyph-keeper
kdialog-master
libharu-master
libpng1637
libredwg-master
potrace-1.16
zlib ***编译 AlfaCAD 主程序***(AlfaCAD、AlfaCADPL、AlfaCADUA、AlfaCADES) CC2/Source 包含 CmakeLists.txt 文件。
此文件由 cmake 用于编译整个程序。
所以请安装你的 Linux 所需的 cmake,无论如何你都需要它。
作者使用的是 Jetbrains 的 CLion IDE。CLion 是商业工具,但价格便宜(每月几美元),而且是我见过的最好的 IDE。不过,你可以使用任何你喜欢的 IDE。
AlfaCAD 应使用 cland 和 clang++ 编译器进行编译,这是为了与 Windows 兼容,Windows 在 Visual Studio 2022 中也默认使用这种 C 和 C++ 实现。这就是我在 Windows 上编译 AlfaCAD 所用的方法。 使用 CC2/Source/***CmakeLists.txt*** 文件作为项目配置文件。 CC2/Source/***CmakeLists.txt*** 包含 8 个编译配置: (英文版) - AlfaCAD Debug - AlfaCAD Release (波兰语版) - AlfaCADPL Debug - AlfaCADPL Release (乌克兰语版) - AlfaCADUA Debug - AlfaCADUA Release (西班牙语版) - AlfaCADES Debug - AlfaCADES Release 如果依次编译,二进制文件将存储在相应的文件夹中:
CC2/Source/cmake-build-debug
CC2/Source/cmake-build-release
CC2/Source/cmake-build-debug_pl
CC2/Source/cmake-build-release_pl
以此类推。 你可能可以直接编译,无需重新编译其他库,因为必要的静态或动态链接库已保留在相关文件夹中。
不过,你还需要以下第三方或系统库: - X11 - Xrandr - ncurses - Xm - Xt - fltk - cups - xcb - ruby - curl - "/usr/lib/libQt5Core.so" - "/usr/lib/libQt5Widgets.so" - "/usr/lib/libQt5Gui.so" - "/usr/lib/libQt5InputSupport.a" - "/usr/lib/libQt5PrintSupport.so" - "/usr/lib/libQt5Positioning.so" - "/usr/lib/libKF5WidgetsAddons.so" - "/usr/lib/libKF5TextWidgets.so" - "/usr/lib/libKF5I18n.so" 请安装尚未安装的必要软件包。除了这些库之外,还会链接以下库: clip/cmake-build-release/libclip.a
glyph-keeper/obj/libglyph-allegs.a
libharu-master/cmake-build-release/src/libhpdfs.a
libpng1637/cmake-build-release/libpng.a
allegro5-4.4.3/lib/liballeg.so // 默认
allegro5-4.4.3/lib/liballeg.a // 可选
allegro5-4.4.3/lib/libjpgalleg.so // 默认
allegro5-4.4.3/lib/libjpgalleg.a // 可选
zlib/libz.a 这些文件夹的位置必须与 CC2 文件夹平行,因为这是 CmakeLists.txt 中的设置:
"${CMAKE_CURRENT_SOURCE_DIR}/../../clip/cmake-build-release/libclip.a"
以此类推。 ***AlfaCAD***
***Windows*** 从 AlfaCAD-CC2.zip 文件中提取 CC2 文件夹到主家目录,或任何其他我们从此称之为“CC2 根文件夹”的文件夹。 CC2 代表“Cooking CAD 2”,其中“2”只是版本号。我们在制作 CAD。 从 AlfaCAD-Windows-Pack.tar 提取所有压缩包到任意临时文件夹,使用命令:
tar -xvzf AlfaCAD-Windsows-Pack.tar -C New-Location
其中 New-Location 需替换为任意临时文件夹名称,然后将每个压缩包提取到创建 CC2 根文件夹的位置。最终你会得到如下文件夹结构: allegro-4.4.3.1
allegro5-4.4.4
CavalierContours
CC2
Frame3DDa
glyph-keeper
libharu-master
libpng1637
potrace-1.16
pyw
qt5
zlib libredwg-master 文件夹在 Windows 版本中不存在。该文件夹包含 DWG/DXF 转换的源代码,因为它是未经修改地提供给 AlfaCAD 的,所以升级这些工具最简单的方式是直接从
AlfaCAD32-master
AlfaCAD64-master
AlfObjects32
AlfObjects64 每个文件夹都包含 \*.sln 文件,即 Visual Studio 2022 解决方案,因此: - AlfObjects64 文件夹包含用于 AlfaCAD 64 位辅助 DLL 文件的工程文件 - AlfObjects32 文件夹包含用于 AlfaCAD 32 位辅助 DLL 文件的工程文件 AlfaCAD 需要辅助模块 AlfaObjects.lib(库)和 AlfaObjects.dll(动态链接库)。该库用于在多个 AlfaCAD 实例同时运行时进行进程间操作,避免打开与特定文件类型关联的程序时产生不必要的多个实例。它也支持拖放操作。 无需编译这些工程,库文件已经存在。 - AlfaCAD64-master 文件夹包含用于 AlfaCADxx4Win64.exe 的主工程
作为 64 位应用程序,其中 xx 为语言版本,因此是非英文版、PL-波兰语、UA-乌克兰语、ES-西班牙语 - AlfaCAD32-master 文件夹包含用于 AlfaCADxx4Win.exe 的主工程
作为 32 位应用程序,其中 xx 为语言版本,因此是非英文版、PL-波兰语、UA-乌克兰语、ES-西班牙语 AlfaCAD64 和 AlfaCAD64 解决方案各包含 8 个编译配置: - Debug - Release - Debug_PL - Release_PL - Debug_UA - Release_UA - Debug_ES - Release_ES 在 AlfaCAD64 项目中,目标应选择为 x64,AlfaCAD32 中选择 x86 或 Win32。 每个配置都会生成二进制文件并存储在以下文件夹中: - Debug - Release - DebugPL - ReleasePL 等等 你可能可以直接编译,无需重新编译其他库,因为必要的静态或动态链接库已保留在相关文件夹中。 不过,你还需要以下第三方或系统库,这些库在 Windows 软件开发工具包中始终可用:[https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/) 请安装它。 除了这些库,还会链接以下库: allegro-4.4.3.1\allegro\build\lib\RelWithDebInfo\alleg44.lib
64位allegro5-4.4.4\build\lib\RelWithDebInfo\alleg44.lib
32位
allegro-4.4.3.1\allegro\build\lib\RelWithDebInfo\jpgalleg.lib 64位allegro5-4.4.4\build\lib\RelWithDebInfo\jpgalleg.lib
32位..\AlfObjects64\Release64\AlfaObjects.lib
64位..\AlfObjects32\Release\AlfaObjects.lib
32位glyph-keeper\_v2\obj\glyph-allegs.lib
64位glyph-keeper32\obj\glyph-alleg32.lib
32位glyph-keeper64\obj\glyph-allegs.lib
64位 – 备用
libharu-master\src\build\Release\hpdf.lib 64位libharu-master\src\build32\Release\hpdf.lib
32位
zlib\build\Release\zlibstatic.lib 64位zlib\build32\Release\zlibstatic.lib
32位
lpng1637\projects\vstudio\x64\Release\libpng16.lib 64位lpng1637\projects\vstudio32\Release\libpng16.lib
32位
qt5\qt5-build\qtbase\lib\Qt5Core.lib 64位qt5\qt5-build\qtbase\lib\Qt5Gui.lib
64位qt5\qt5-build\qtbase\lib\Qt53DCore.lib
64位
qt5\qt5-build32\qtbase\lib\Qt5Core.lib 32位qt5\qt5-build32\qtbase\lib\Qt5Gui.lib
32位qt5\qt5-build32\qtbase\lib\Qt53DCore.lib
32位
如果在使用提供的库文件进行链接时遇到问题,或出于任何原因希望修改它们,以下是实现方法:
***Allegro***
Allegro 是一个主要面向视频游戏和多媒体编程的跨平台库。它处理常见的低级任务,如创建窗口、接收用户输入、加载数据、绘制图像、播放声音等,并通常将底层平台抽象化。然而,Allegro 不是游戏引擎:你可以自由地设计和组织程序结构,就像你喜欢的 CAD 程序一样。Allegro 最初由 Shawn Hargreaves 于 1990 年为 Atari ST 创建,随后在 1995 年通过 DJGPP 编译器迁移到 MS-DOS,最终移植到 Windows、Unix 和 Linux。
在 Linux、Windows 64 位和 Windows 32 位版本的 AlfaCAD 中使用了略有不同的 Allegro 4 版本。
***allegro5-4.4.3*** 文件夹代表该库在 Linux 上的最佳版本,包含一些由 AlfaCAD 作者针对 X11 部分所做的扩展,主要与多显示器设置的屏幕和窗口调整大小有关,以及支持 UTF8 的键盘扩展。
***allegro-4.4.3.1*** 文件夹代表 Windows 64 位版本的唯一库,也是 AlfaCAD 作者为 AlfaCAD 创建的第一个 64 位 Windows 版本,其中包含许多更改和扩展,包括针对多显示器设置的屏幕和窗口调整大小、拖放支持,以及支持 UTF8 的键盘扩展。
***allegro5-4.4.4*** 文件夹代表最新的 4.x 版本的标准 Allegro 版本,但不支持 64 位二进制格式,因此用于 32 位 Windows 版本的 AlfaCAD。其中也包含类似 GDI 模块的扩展,用于多显示器设置的屏幕和窗口调整大小、拖放支持,以及支持 UTF8 的键盘扩展。
AlfaCAD 需要两个在完整 Allegro 项目中生成的库文件:Linux 下为
- liballeg.a
- libjpgalleg.a
Windows 下为
- alleg44.lib
- jpgalleg.lib
这些库与 AlfaCAD 动态链接,因此除了 \*.lib 之外,Linux 还有共享库:
- liballeg.so.4.4.3
- liballeg.so.4.4(指向 liballeg.so.4.4.3)
- liballeg.so(指向 liballeg.so.4.4)
Windows 下的动态链接库为:
- alleg44.dll
- jpgalleg.dll
分别对应 64 位和 32 位版本。
Linux 编译
编译基于 cmake,使用 allegro5-4.4.3/CmakeCache.txt 配置文件。编译 allegro Release 和 jpgalleg Release 配置即可获得所需内容。
生成的 \*.so 文件应复制到主 AlfaCAD 文件夹(如果重新编译后有更改),而 \*.a 文件将被 AlfaCAD 项目使用,应保留在原位置。
Windows 编译
VS2022 项目:allegro-4.4.3.1\allegro\build\ALLEGRO.sln
64位只需编译两个工程:
- allegro Release 或 RelWithDebInfo x64 - jpgalleg Release 或 RelWithDebInfo x64 这将生成:
allegro-4.4.3.1\allegro\build\lib\RelWithDebInfo\alleg44.lib 64位
allegro-4.4.3.1\allegro\build\lib\RelWithDebInfo\jpgalleg.lib 64位
以及
allegro-4.4.3.1\allegro\build\lib\RelWithDebInfo\alleg44.dll 64位
allegro-4.4.3.1\allegro\build\lib\RelWithDebInfo\jpgalleg.dll 64位 allegro5-4.4.4\build\ALLEGRO.sln
32位allegro RelWithDebInfo Win32
jpgalleg RelWithDebInfo Win32 这将生成:
allegro5-4.4.4\build\lib\RelWithDebInfo\alleg44.lib 32位
allegro5-4.4.4\build\lib\RelWithDebInfo\jpgalleg.lib 32位
以及
allegro5-4.4.4\build\lib\RelWithDebInfo\alleg44.dll 32位
allegro5-4.4.4\build\lib\RelWithDebInfo\jpgalleg.dll 32位 ***glyph-keeper*** glyph-keeper 是由 Kirill Kryukov 创建的库,帮助将 FreeType(TrueType)字体引入 AlfaCAD。我很高兴能用到他的作品。该库经过 AlfaCAD 作者的轻微修改,并与更新的 FreeType 库一起测试。 该库有 1 个 Linux 版本和 3 个 Windows 版本。 Linux 下:
glyph-keeper 文件夹 Windows 下:
glyph-keeper\_v2 稍作实验的版本,基于升级的 FreeType
glyph-keeper32 32 位标准库
glyph-keeper64 64 位标准库 当前配置中,glyph-keeper\_v2 用于 64 位 AlfaCAD,glyph-keeper32 用于 32 位版本。 Linux 下使用 make:
make /f Makefile.GNU.all TARGET=ALLEGRO ALLEGRO\_STATICLINK=1 Windows 下使用 MinGW(请遵循说明):
nmake /f Makefile.MSVC71 TARGET=ALLEGRO ALLEGRO\_STATICLINK=1 64 位:
文件夹 glyph-keeper64 或 glyph-keeper\_v2 32 位:
文件夹 glyph-keeper32 你会得到 glyph-allegs.lib,它被静态链接到 AlfaCAD。 ***libharu*** libharu 是由 Takeshi Kanno 和 Antony Dovgal 开发的用于生成 PDF 的库。
它被用于将图纸打印为 PDF 格式,以及展示静态和动态分析的结果。 ***Linux:***
libharu-master 文件夹中有 CmakeLists.txt 文件,这是 cmake 的项目配置文件(或者我选择的 CLion IDE)。有两个配置:Debug 和 Release。 它们将生成静态链接库,例如:
/home/marek/libharu-master/cmake-build-release/src/libhpdfs.a 直接编译即可。 ***Windows:***
有 libharu-master 文件夹。
64 位 VS 项目:
"libharu-master\src\build\Project.sln"
选择 Release x64 后,你会得到:
"libharu-master\src\build\Release\hpdf.lib" 32 位 VS 项目:
"libharu-master\src\build32\Project.sln"
选择 Release Win32 后,你会得到:
"libharu-master\src\build32\Release\hpdf.lib" ***qt5*** 该库用于 AlfaCAD 中的四边形变换,主要用于特定的绝缘填充变换,但不仅限于此。 ***Linux:*** 只需安装 Qt5。 将使用以下库: - "/usr/lib/libQt5Core.so" - "/usr/lib/libQt5Widgets.so" - "/usr/lib/libQt5Gui.so" - "/usr/lib/libQt5InputSupport.a" - "/usr/lib/libQt5PrintSupport.so" - "/usr/lib/libQt5Positioning.so" ***Windows:*** Windows 包中有一个 qt5 文件夹,包含最小包和所有必需的头文件与库。无需在 Windows 上安装 Qt5,除非你想对 AlfaCAD 进行重大修改。 ***zlib*** 这是一个用于 Windows 和 Linux 的压缩库。
该库将被静态链接到 AlfaCAD。 ***Linux:*** 按照说明获取: zlib/libz.a ***Windows:***
64位:
VS 解决方案:zlib\build\zlib.sln
zlibstatic Release x64
你会得到:
zlib\build\Release\zlibstatic.lib 32位:
VS 解决方案:zlib\build32\zlib.sln
zlibstatic Release Win32
你会得到:
zlib\build32\Release\zlibstatic.lib ***libpng1637*** PNG 参考库,由多位作者开发 [https://sourceforge.net/projects/libpng/files/libpng16/1.6.37/](https://sourceforge.net/projects/libpng/files/libpng16/1.6.37/)。请阅读 LICENCE 文件以了解版权声明、免责声明和许可。 ***Linux:***
有 cmake/CLion 配置文件:libpng1637/CmakeLists.txt
编译配置是 png-static Release。 你会得到:
libpng1637/cmake-build-release/libpng.a ***Windows:***
64位:
VS 解决方案:"lpng1637\projects\vstudio\vstudio.sln" 项目:zlib Release x64
以及:libpng Release x64
你会得到:
"lpng1637\projects\vstudio\x64\Release\libpng16.lib"
"lpng1637\projects\vstudio\x64\Release\libpng16.dll" 32位:
VS 解决方案:"lpng1637\projects\vstudio32\vstudio.sln" 项目:zip Release x86
以及:libpng Release x86
你会得到:
"lpng1637\projects\vstudio32\Win32\_DLL\_Release\libpng16.lib"
复制到:
"lpng1637\projects\vstudio32\Release\libpng16.lib" 并复制:
"lpng1637\projects\vstudio32\Win32\_DLL\_Release\libpng16.dll"
复制到:
"lpng1637\projects\vstudio32\Release\libpng16.dll" ***CavalierContours*** CavalierContours 是由 jbuckmccready 开发的小型库,用于处理同时包含直线和恒定半径弧段的二维多段线。这个 C++ 库目前未积极开发,开发工作正在 Rust 中继续。它被 AlfaCAD 用于支持多段线的“偏移”编辑功能。 无需编译,源文件已包含在 AlfaCAD 项目中。 ***clip*** 这是由 David Capello 开发的库,版权 (c) 2015-2022,用于复制/检索剪贴板/粘贴板中的内容。 该库仅在 AlfaCAD 的 Linux 版本中使用。 有 clip/CmakeLists.txt 文件用于 cmake(或我选择的 CLion),并选择配置:
clip Release
它将生成 clip/cmake-build-release/libclip.a ***kdialog4alfa*** 这是一个仅用于 Linux 版本的支持程序。与原始 kdialog [https://develop.kde.org/docs/administration/kdialog/](https://develop.kde.org/docs/administration/kdialog/) 类似,该程序由 Matthias Hoelzer 于 1998 年创建,其他作者包括 Tristan Miller(最后维护者,2020 年),在 GPL-2.0 许可下发布。 AlfaCAD 作者扩展了该版本,增加了用于创建单行或多行文本的特殊对话框,并带有多个属性,作为 AlfaCAD 的一部分,但作为一个独立程序调用,以支持基于 Qt 库的高级文本操作。 编译非常简单: 在 kdialog-master/build 文件夹中运行: make clean make 它将生成:kdialog-master/build/bin/kdialog4alfa 请不要用更新的 kdialog 版本覆盖 kdialog-master 文件夹,否则无法与 AlfaCAD 一起使用。相关文件已修改:widgets.cpp、kdialog.cpp、NcFramelessHelper.cpp、NcFramelessHelper.h、widgets.h、utils.cpp、utils.h ***libredwg*** 这是一个开源程序,以原始版本用于读取 DWG 文件(原生 Autocad 绘图文件):
选择:dwg2dxf Release 生成:libredwg-master/cmake-build-release/dwg2dxf 选择:dxf2dwg Release 生成:libredwg-master/cmake-build-release/dxf2dwg 同时生成大量共享库文件:libredwg-master copy/cmake-build-release/libredwg.so,必须包含在 AlfaCAD 文件夹中以转换图纸。 ***Windows 版本:*** 因为存在预编译版本且持续开发中,更简单的方式是直接从以下位置下载 64 位和 32 位版本:
由 Peter Selinger 编写,版权 (C) 2001-2019,已由 AlfaCAD 作者扩展了一个模块,用于生成原生 AlfaCAD 块,以便将其作为包含折线和圆弧的矢量块插入到图纸中。
添加了 backend_alx.h 和 backend_alx.files,并修改了 main.c 文件。 ***Linux:***
在 potrace-1.16 文件夹中:
make clean
make 它将生成:
potrace-1.16/src/potrace 和
potrace-1.16/src/mkbitmap ***Windows:***
VS 解决方案:potrace-1.16\potrace.sln 64位:
项目:potrace Release_64 x64
生成:
potrace-1.16\x64\Release_64\potrace.exe
potrace-1.16\x64\Release_64\mkbitmap.exe(不会更改) 32位:
项目:potrace Release Win32
生成:
potrace-1.16\Release\potrace.exe
potrace-1.16\Release\mkbitmap.exe(不会更改) ***image2image***
***image2jpg***
***image2pcx***
***image2png***
***jpg2noexif*** 这些程序用于在不同图形格式之间转换图像,并用于图像文件导入功能,以及打印图纸或保存为图形文件的功能。
这些程序在 Linux 下以 Python 脚本(.py)形式存在,在 Windows 下以编译形式(.exe)存在。 编译版本已包含以简化安装,因为 Windows 上并非总是安装 Python,而 Linux 上通常已安装。
Python 需要 pillow 库以便运行脚本。
*.pyw 文件(Windows 下与 *.py 等效)归档在 pyw 文件夹中,可以替换编译版本,这需要对程序进行少量更改,方式与 Linux 版本类似。 ***Frame3DDa*** Frame3DD 是自由开源软件,用于 2D 和 3D 框架及桁架的静力和动力分析,弹性与几何刚度均可。版权 (C) 1992-2009 Henri P. Gavin。 [***https://frame3dd.sourceforge.net/***](https://frame3dd.sourceforge.net/) Frame3DD 的原始版本经过 AlfaCAD 作者修改,因此文件夹名称改为 Frame3DDa。 由于所做的修改,附带项目的 Frame3DD 版本是唯一能与 AlfaCAD 协同工作的版本。如果希望修改此程序,请从提供的版本开始。 顺便说一句:Frame3DD 不再由其作者积极开发,因此我们可以假设目前最新的版本就是 AlfaCAD 作者修改的那个版本。 主要修改: 1. 修正了节点之间加载元素跨度有限时的均匀分布载荷。 2. 修正了节点之间跨度有限时单元长度上的内力。 3. 更改了在节点之间跨度有限时确定横截面内力的单元长度划分方法。 4. 增加了以优化格式生成动态分析结果,用于 AlfaCAD 中的振动模式动画。 ***Linux:*** Frame3DDa/CmakeLists.txt 是 cmake(Clion 作为我选择的 IDE)的配置文件。 使用 frame3dd Release 配置进行编译。 它将生成:Frame3DDa/cmake-build-release/frame3dd 此程序必须复制到主 AlfaCAD 文件夹中(如果进行了任何修改)。 ***Windows:*** frame3dda 在 Frame3DDa\src\Makefile 中可以选择,或使用 Frame3DDa\src\Makefile32 替代 32 位 \# 64 位(使用 Strawberry,如果已安装 perl)
LDFLAGS = -lm
\# 32 位(不使用 Strawberry,如果已安装 perl,则禁用)
\#LDFLAGS = -lm -m32 从:"Frame3DDa\src" 64位: make clean
make 32位: make -f Makefile32 clean
make -f Makefile32 它将生成:Frame3DDa\src\frame3dd.exe 此程序必须复制到主 AlfaCAD 文件夹中(如果进行了任何修改)。 ***AlfaCAD 的历史*** AlfaCAD 的前身大约在 1992 年使用非常原始的 16 位 Borland C 编译器和简单的 BGI(Borland 图形接口)图形库编写,该库仅有 16 种颜色可供选择。该程序在欧洲中心创建,是当时昂贵且复杂的 CAD 程序的廉价替代品。它被称为 AlfCAD,名称的根源来自一个角色 Alf,一个 1984 年由 Paul Fusco 为美国电视系列剧 "Alf" 创建的外星木偶。因为 Alf 很聪明。 这个简单的程序在两位作者团队解散后(包括当代 AlfaCAD 的作者),使用更先进的工具从头重写,包括 32 位 DJGPP 编译器和 GRX 图形库。最终,在 20 世纪末,Allegro 库被实现,最初作为 32 位扩展 DOS 应用程序,最后作为使用 Visual C 编译器的原生 32 位 Windows 应用程序。在此期间,该程序被克隆为一个用于工业自动化设计(Aster)的程序,以及独立应用程序,用于支持地下污水、水和燃气网络的设计(AlfCAD-Profile),以及其他支持钢筋混凝土板设计甚至使用膨胀粘土块技术设计房屋的克隆。 随后,经济危机和个人危机使作者远离程序开发超过 16 年,从事其他完全不同的事情,在另一个地方、国外,远离其程序的用户。随着时间的推移,由于缺乏作者支持,这些程序被其他程序取代。在此期间,作者从事支持衍生品交易所交易程序的发展,后来是加密货币。最终,作者本人作为一名工程师,需要暂时回归工程制图,当道路再次转弯时,他发现了其他目标。对免费下载软件可用性的失望最终促使作者从旧硬盘中取出源代码,于是诞生了以新形式复兴该程序的概念。 不要将该程序称为可怜巴巴的 Phoenix-CAD,尽管它确实是从灰烬中重生,但它的名字让人想起其创始人,与外星生物无关。相反,这个名字暗示它是一种基础的 CAD,就像希腊字母的第一个字母。在数字命理学中,字母 A 所代表的能量与自信、独立、勇气和领导力等理念共鸣。它是坚定而有目的的。根据古老的数字命理学科学,字母 A(以及希腊字母 Α 或 α,其数值为 1)与领导力、个性和自我表达的品质相关联。它代表开始、主动性和开拓精神。好吧,足够好了。 Alfa 的拼写偏离英语规范,使用 f 而非 ph,正如大多数欧洲语言中那样,因为某些语言的母语者可能无法正确发音 Alpha 中的 ph(他们可能不知道 ph 应发音为 f)。AlfaCAD 的作者采用了北约音标字母中的这一规则。 好主意永远不会消亡…… 2020 年初,作者开始致力于 AlfaCAD,并在年底开始开发 Allegro 4 库的 64 位版本,而当时并不存在。这在 2020 年平安夜实现,第二天 AlfaCAD 已经是 64 位了。作者仍然维护 32 位版本作为遗产,尽管维护它可能已经没有意义了,每个人都在使用 Windows 的 64 位版本。 2022 年,作者开始将 AlfaCAD 作为带有 Xlib 图形(X11、XOrg)的原生 Linux 应用程序进行开发。 今天,在与 Arch Linux、KDE、CLion 合作超过 2 年后,Linux 版 AlfaCAD 已获得关键发行版的地位,整个程序的开发过程已迁移到 Linux,仅使用 Visual Studio 2022 Community Edition 在 Windows 上重新编译代码(Windows 的 cmake/CLion 设置方案正在构建中)。 为了向后兼容,程序可以加载以前程序创建的图纸文件并将其转换为 AlfaCAD 格式。同样的情况也适用于绘图块,因此读取图纸和块的过程有些复杂。许多包含在程序安装包中的示例图纸来自以前的程序。 由于部分代码编写时间较早,当时作者并未想到有一天会发布代码并使其可供全世界使用,因此一些注释使用作者的母语编写,部分变量名称虽然具有象征性,但通过名称暗示其用途。较新的代码部分在变量名称(如果具有可读性而非仅符号)和注释中同时使用英文。源文件名也是如此。 作者将努力改进代码的共享部分,但也深知在自动翻译时代,这种障碍仅是表面现象。 在任何情况下,如果尝试编译程序失败,尽管尽了最大努力并满足了上述所有要求,或部分代码对您来说无法理解或可能存在错误,请不要犹豫,通知我。总会有解决方案。这是我的电子邮件地址:
2024 年 10 月
*最终,我做了我一直认为我会做的事。我不仅仅是在利用开源,我也为它做出了贡献。* *现在如果你喜欢,可以雇佣我。我准备参与项目,我的专业知识足够好。你可以查看我的代码。* ```
标签:2D绘图, C++, CAD, CLion, CMake, 云安全监控, 合规性检查, 图形界面, 客户端加密, 工程制图, 工程软件, 开源, 技术绘图, 数据擦除, 有限元分析, 科学计算, 算法分析, 结构分析, 结构设计, 编译, 计算力学, 计算机辅助设计, 集成开发环境, 静态分析