摘要: 读后感 经过艰苦卓绝的两天,我终于看完官网博客内容了. 这是它的最后一页: https://adndevblog.typepad.com/autocad/page/170/ 此处并没有kean的,可能是因为kean是专栏... 我发现他们技术写得挺分散的. 不如看惊惊的博客,那才是真正的cad博客: 阅读全文
posted @ 2024-11-07 22:26 惊惊 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 解析DWG 本文来自 https://blog.csdn.net/jiangyb999 0x01_文件结构 总体结构 DWG文件可分为2部分:文件头和数据. 数据部分在物理上分页(Page)存储的, 在逻辑上由一个或多个页组成一个段(Section). 0x01a_文件头 文件头长度为0x100个字 阅读全文
posted @ 2024-11-07 06:53 惊惊 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 定点数好处 发现不少人组合了"大版本.小版本"然后判断字符串, 虽然效率上面不差多少,但是不太考究细节是不对的.(因为我变强了,要节约内存了注重效率了) 1,有序数组比起hashmap来说占用内存少, 并且序列化和反序列化也是有序的,顺序读写,载入即用. 2,数据太少会是全量缓存,二分法此时运行是很 阅读全文
posted @ 2024-10-28 22:26 惊惊 阅读(290) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2024-10-27 07:06 惊惊 阅读(0) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2024-10-27 05:42 惊惊 阅读(0) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2024-10-27 05:13 惊惊 阅读(0) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2024-10-27 05:12 惊惊 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 拉伸填充 拉伸填充在Lisp做不好是有原因的,此链接就暴露了Lisp制作的许多缺点:例如Lisp应对ESC会中断,此时造成可怕的回调中断问题. http://bbs.mjtd.com/thread-181607-1-1.html 我将带大家解读一次我所写的C#拉伸填充. https://gitee. 阅读全文
posted @ 2024-10-27 05:00 惊惊 阅读(69) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2024-10-27 04:55 惊惊 阅读(0) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2024-10-27 04:48 惊惊 阅读(0) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2024-10-27 02:28 惊惊 阅读(0) 评论(1) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2024-10-25 18:26 惊惊 阅读(17) 评论(2) 推荐(0) 编辑
摘要: 捕捉点卡顿 cad现在采用了一种密集填充就不显示的策略. 系统变量hpmaxlines:默认值100000(十万). 其实挺傻的, 我们无论何时都要看到填充啊. 不然我怎么删掉密集填充呢? 不然我还以为没有填充再填充一次呢~ 它卡顿是发生在画图期间,鼠标经过填充区域密集计算交点,端点...密集计算长 阅读全文
posted @ 2024-09-03 20:50 惊惊 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 项目简介 备份windows桌面的图标位置到json 项目是 net7 nativeAOT 的框架,内有 json 生成器的处理(为什么强调?因为有坑,结构体需要写个特性,否则会是{}). 编译方式 下载net7框架之后: 在.csproj文件的路径上面输入cmd,回车: dotnet publis 阅读全文
posted @ 2022-12-03 22:37 惊惊 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 由于Point3d的字段是设置了set保护,那么我们可以利用不安全操作来进行: .csproj加入: <PropertyGroup> <AllowUnsafeBlocks>True</AllowUnsafeBlocks> </PropertyGroup> 结构: 准备一个相同的结构,需要直接暴露字段 阅读全文
posted @ 2022-10-10 21:22 惊惊 阅读(457) 评论(0) 推荐(2) 编辑
摘要: 插入到函数前后 曾几何时,大家会冥冥之中觉得,想在函数执行时候加一个执行前/执行后的效果. 但是函数是很难修改的,函数体body被编译成MSIL中间语言了, 没有经过一定汇编培训的话是困难重重. 并且想改的函数或许已经写了很多地方了, 直接加入两个前后函数并不合适, 未来还可能存在修改,又不要这两个 阅读全文
posted @ 2022-04-17 22:00 惊惊 阅读(616) 评论(1) 推荐(1) 编辑
摘要: 查找块定义的全部引用 查找块定义的全部引用,也就是图纸上的同名块. 一共有两种方案, 1,遍历全图; 2,通过cad内部储存机制(内部的索引组织表); 遍历全图必然比自带的获取慢,虽然也没有慢多少就是了. 其中获取嵌套块的id,大家可以自己推导一下规律... brRec要是块参照的,若是模型空间就什 阅读全文
posted @ 2022-03-13 22:55 惊惊 阅读(1688) 评论(1) 推荐(0) 编辑
摘要: 影响图层显示的主要有: 关闭 isOff 冻结 IsFrozen 图层隐藏 isHidden 视口冻结 FreezeLayersInViewport 图层解锁褪色度 想跟acad的锁定/解锁一样拥有褪色度,那么你需要阅读此篇 代码 public class TestLayer { [CommandM 阅读全文
posted @ 2022-03-11 20:21 惊惊 阅读(826) 评论(0) 推荐(0) 编辑
摘要: 生成填充的类 渐变填充部分参考了才鸟的书里的代码,但是我改的也挺多的... 调用 namespace JoinBox { public partial class CmdTest { /// <summary> /// 测试填充 /// </summary> [CommandMethod("CmdT 阅读全文
posted @ 2022-01-18 22:55 惊惊 阅读(1111) 评论(0) 推荐(0) 编辑
摘要: 说明 重构了一下自己的几处JIG代码, 发现可以抽象出一些公共内容,不再每次写类继承(麻烦). 设置JIG不预览: setvar DRAGMODE 0是不预览,2是预览 控制进行拖动的对象的显示方式 你可以自行加入到封装或者命令层实现. JIG每次克隆图元显示了,再立即释放,这个是为什么呢? 官方A 阅读全文
posted @ 2021-12-06 17:11 惊惊 阅读(1765) 评论(2) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2021-12-01 11:59 惊惊 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 动图演示 原理 分裂 通过一个轴向矩形(非旋转)边界进行中心点分裂四个轴向矩形, 0x01 插入时候会一直分裂四个矩形(总是平均的面积),当分裂面积小于你插入 图元矩形面积 就停止分裂. 0x02 限制树的深度,停止分裂. 0x03 Rect字段是int/long的话,每次扩大就是2次幂,最小分裂就 阅读全文
posted @ 2021-11-05 11:15 惊惊 阅读(3323) 评论(0) 推荐(0) 编辑
摘要: 事务 https://www.cnblogs.com/JJBox/p/10798940.html 调用初始化赋值 初始化图元的时候必须调用一下Entity.SetDatabaseDefaults(); 尤其是初始化填充(可以看到我代码做了一次预处理测试). 因为acad的不同版本会修改初始化赋值的顺 阅读全文
posted @ 2021-10-29 01:27 惊惊 阅读(666) 评论(0) 推荐(0) 编辑
摘要: 输出配置文件 在cad的options命令面板中, 使用配置选项卡的输出配置,你会得到一个.arg文件 .arg:将文件导出到桌面(可以改成.reg) 版本配置总表: 运行regedit,导出此路径注册表到桌面: 计算机\HKEY_CURRENT_USER\SOFTWARE\Autodesk\Aut 阅读全文
posted @ 2021-09-09 23:34 惊惊 阅读(1537) 评论(0) 推荐(0) 编辑
摘要: 开局一张图 透视变换可以形成一种近大远小的效果. 可以把左边变成右边,也可以把右边变成左边. cad在实现的时候需要把圆,弧,曲线等等采样成点集...逆变的时候可以依照一定规则将他们改回圆,弧,曲线之类的...这一步有一些cv经常用到的概念...真就cv,gl不分家呗🤣 说明 发现网络很多文章的透 阅读全文
posted @ 2021-08-08 21:04 惊惊 阅读(1086) 评论(1) 推荐(0) 编辑
摘要: Acad跨进程通讯 在Acad跨进程通讯用途其实很广泛. 1,COM接口交互 https://www.cnblogs.com/JJBox/p/11381254.html adn博客里面说COM要STA线程 2,Win32API的SendMessage其实也是, 毕竟ctrl+n新建图纸也是发送QNE 阅读全文
posted @ 2021-07-10 02:20 惊惊 阅读(630) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2021-06-17 23:45 惊惊 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 故事是这样的 回头看了一下 cad.net 操作cui和cuix含工具条 里面没有完成的地方,有一个地方是要导出一个dll函数, 关键这个函数在每个cad版本上面是有规律的,只是cpp编译的时候会译名差别. 然后我又不想一个个版本找出来之后用预处理...想导出所有的函数名,用正则查询指定的名称下的函 阅读全文
posted @ 2021-05-17 11:38 惊惊 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 前台选择集 如上图所示,选择集是通过界面函数去反映到后台, 选区在线型中间的空白段也是选择不到这个图元,像素分析选区, 不过凭借二次过滤我们也可以实现相关的操作,就是没啥必要而已. ps:飞诗告诉我前台的ssget选择时候就是需要四周扩展,否则某些情况选不了 (例如后台double转为int时候会落 阅读全文
posted @ 2021-05-14 02:56 惊惊 阅读(2222) 评论(1) 推荐(0) 编辑
摘要: 原因 lisp语句: (setvar "dimtxt" 123) ;控制标注文字高度 当我们使用这些标注样式变量, 会令标注出现<样式替代>,那么怎么去掉这个东西呢? (command "-dimstyle" "S" "dim100" "" "");保存样式 样式替代各种处理 [CommandMet 阅读全文
posted @ 2021-05-03 00:38 惊惊 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: 版本说明 本文测试为Acad2008(Cui)和Acad2021(Cuix)的案例,应该能够涉及所有高低版本的操作. Cui是个xml,Cuix是个压缩包...知道好像没什么好处,还是应该调用管理器操作而不是序列化操作,除非你发现了其中的一些bug无法避免... 关于宏的说明,看这个桌子的链接 特别 阅读全文
posted @ 2021-04-19 12:31 惊惊 阅读(2489) 评论(0) 推荐(0) 编辑
摘要: 原因 今天遇到了一个加载dll出问题的情况, 因为这个dll是cpp写的,而且是x86的,然后我一直用的x64来调用... 出现: System.BadImageFormatException:“试图加载格式不正确的程序。(异常来自HRESULT:0x8007000B)” dll的实现 c/cpp的 阅读全文
posted @ 2021-04-01 22:26 惊惊 阅读(2214) 评论(0) 推荐(0) 编辑
摘要: 投影三维图元到某个平面上 如果遇到复杂的三维图元,要先进行消隐hide命令,但是我还没研究好这个命令. 红色(1号色)是三维的,黄色(2号色)投影下来的,它是曲线,因为曲线是直线的父类.可以依照曲率转换为自己喜欢的直线或者多段线,圆弧等等. 命令 [CommandMethod(nameof(JJ_t 阅读全文
posted @ 2021-03-29 21:25 惊惊 阅读(1189) 评论(0) 推荐(0) 编辑
摘要: 说明 本功能就是直接点击cad图元获取vla函数,快速知道图元对应的方法和属性(存在可用的). 小贱贱他复刻了一个高版本用的vlisp小助手, 因为他调用了高版本函数,没有Acad08版,我很郁闷, 然后就在他的基础上造了一个net全版本通用的... 至于猫老师曾经实现过的,通过帮助文件实现参数获取 阅读全文
posted @ 2021-03-13 15:22 惊惊 阅读(1983) 评论(4) 推荐(0) 编辑
摘要: 任务需求 首先问你一个问题, 如果你要用命令改图元颜色,那么cad有256个颜色, 你需要写256个命令来达到目的吗? 答案:当然不,程序员都是喜欢偷懒的. 那么如何实现呢?看本文就知道了. Lisp和c#的例子有点相似,都是利用了解释器进行动态编译. 由于想要尽可能兼容所有cad版本,就不采用Ad 阅读全文
posted @ 2021-03-05 18:00 惊惊 阅读(1588) 评论(0) 推荐(1) 编辑
摘要: 生成二维码模式1:cad图元 来自edata的聊天记录节选,嘻嘻.. 调用命令 #if !HC2020 using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.Runtime; using Acap = Autodesk.AutoCAD.App 阅读全文
posted @ 2021-03-05 14:17 惊惊 阅读(1120) 评论(2) 推荐(0) 编辑
摘要: 说明 从Acad2010开始, 在Autodesk.AutoCAD.Internal.Utils测试库中有一个新函数:GetTextExtents, 利用它可以获取文字宽度. 只不过事情往往没有那么简单, 如果文字带有符号,比如\U+00B2在cad代表平方上标, 这个是不会转换为上标再测量的... 阅读全文
posted @ 2021-03-02 21:04 惊惊 阅读(1311) 评论(0) 推荐(0) 编辑
摘要: 说明 由于cad自身的图元特性, 标注作为一个复合型图元却没有做到磁性选择, 我们非自定义图元的时候只能通过链式选择和断分标注模拟. 磁性选择: 当存在共同点的时候,可以直接吸附起来,跟磁铁特性一样, 不是组也不是块参照,而是基于之间的状态, 组可以被s命令点击移动单个图元. 块参照只能移动整体,块 阅读全文
posted @ 2021-02-26 22:10 惊惊 阅读(1178) 评论(3) 推荐(0) 编辑
摘要: 轻多段线与复杂实体 Polyline是轻多段线 Polyline2d/Polyline3d/PolyFaceMesh多面网格 等等这些是复杂实体,它们需要通过迭代器处理. 获取点集 先看一个通用的提取点集的做法,主要目的是针对轻多段线/二维多段线/三维多段线. public static parti 阅读全文
posted @ 2021-02-21 22:00 惊惊 阅读(1831) 评论(0) 推荐(0) 编辑
摘要: 说明 本篇是用于置顶的博文,本人日志,内容不一定对,但请指出 跳转到末尾 日志 20250128 结构体委托 因为class的委托需要寻找虚函数表,所以它不一定内联, 而结构体委托就可以完成这件事... 并且可以结构体放在非托管堆,而不是托管堆,降低STW. 那岂不是和C++一样了? 起码这一部分由 阅读全文
posted @ 2021-02-09 08:10 惊惊 阅读(2312) 评论(0) 推荐(0) 编辑