摘要: 说明 本篇是用于置顶的博文,本人日志,内容不一定对,但请指出 跳转到末尾 日志 20240111 现在的c#: StringBuilder sb = new StringBuilder(); StringBuilder sb = new(); StringBuilder? sb = null; va 阅读全文
posted @ 2021-02-09 08:10 惊惊 阅读(1916) 评论(0) 推荐(0) 编辑
摘要: 数学学得好的,都是能把人家的描述语言变成自己的描述语言. 例如你叫这个"矢量积"我叫它"叉积"(叉烧+鸡),当你熟悉了之后,再统一回来,你会发现心情宽阔. 向量(轴) 在编程上面,向量用(X,Y,Z)表示,也就是(123.156,194.156,215,00) 它和点的数据结构是一样的,主要的目的是 阅读全文
posted @ 2021-01-20 00:24 惊惊 阅读(4327) 评论(0) 推荐(1) 编辑
摘要: 需求 应用需求1 我们cad.net开发都会面临一个问题,加载了的dll无法实现覆盖操作, 也就是cad一直打开的状态下netload两次同名但版本不一样的dll,它只会用第一次载入的. 也没法做到热插拔... 应用需求2 制作一个拖拉dll到cad加载,但是不想通过发送netload到命令栏以明文 阅读全文
posted @ 2020-10-18 03:58 惊惊 阅读(7060) 评论(4) 推荐(2) 编辑
摘要: 动图演示 简述 有人问avlisp能不能修改打印机纸张大小? 回答:你若能调用解压包,解压pmp即可,若不能,请使用c#,cpp语言,因为这样有人家做好的库. 毕竟我看过有人可以直接操作内存,能做出来也不出奇. 我,青蛙,e大三个人聊天时候意外发现pc3和pmp是个压缩包,我们用txt直接打开了它, 阅读全文
posted @ 2019-05-22 23:36 惊惊 阅读(7991) 评论(37) 推荐(1) 编辑
摘要: 一些浩辰的问题移步去: cad问题小百科_Gcad (浩辰可能和桌子具有相同的问题,所以这篇你可能还是要看) 若大家对以下问题有更好的解决方案,可以评论中用 #20071编号 的进行评论,以便更好沟通~ #20071安装提示缺少dfst.dIl文件 Acad2007运行时遇到了这种情况,提示缺少df 阅读全文
posted @ 2019-05-11 15:17 惊惊 阅读(3837) 评论(0) 推荐(0) 编辑
摘要: 项目简介 备份windows桌面的图标位置到json 项目是 net7 nativeAOT 的框架,内有 json 生成器的处理(为什么强调?因为有坑,结构体需要写个特性,否则会是{}). 编译方式 下载net7框架之后: 在.csproj文件的路径上面输入cmd,回车: dotnet publis 阅读全文
posted @ 2022-12-03 22:37 惊惊 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 由于Point3d的字段是设置了set保护,那么我们可以利用不安全操作来进行: .csproj加入: <PropertyGroup> <AllowUnsafeBlocks>True</AllowUnsafeBlocks> </PropertyGroup> 结构: 此类是用于优化,因此直接暴露字段 ( 阅读全文
posted @ 2022-10-10 21:22 惊惊 阅读(345) 评论(0) 推荐(2) 编辑
摘要: AOP 几个包说明: Mono.Cecil 它不能动态注入,只可以选择一个dll然后注入. Fody 能反射自己的特性来进行注入 Harmony2 能反射人家并且动态注入, 但是我发现被注入的函数不能断点了,而注入的头尾两个函数可以,真奇怪...估计是注入行为已经破坏了调试文件,但是它没有把调试文件 阅读全文
posted @ 2022-04-17 22:00 惊惊 阅读(470) 评论(0) 推荐(1) 编辑
摘要: 说明 这个操作用来提供查找同名块, 见代码一共有两种方案,一种是遍历全图,一种是通过cad内部储存机制(大概是一个表结构) 遍历全图必然比cad预先提供的获取慢. 其中获取嵌套块的id,大家可以自己推导一下规律... 代码 c# #if !HC2020 using Autodesk.AutoCAD. 阅读全文
posted @ 2022-03-13 22:55 惊惊 阅读(1251) 评论(0) 推荐(0) 编辑
摘要: 说明 cad交互操作的时候,想跟cad的锁定和解锁一样拥有褪色度,那么你需要阅读此篇 代码 #if !HC2020 using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk. 阅读全文
posted @ 2022-03-11 20:21 惊惊 阅读(581) 评论(0) 推荐(0) 编辑
摘要: 生成填充的类 渐变填充部分参考了才鸟的书里的代码,但是我改的也挺多的... 调用 namespace JoinBox { public partial class CmdTest { /// <summary> /// 测试填充 /// </summary> [CommandMethod("CmdT 阅读全文
posted @ 2022-01-18 22:55 惊惊 阅读(897) 评论(0) 推荐(0) 编辑
摘要: 说明 重构了一下自己的几处jig代码,发现可以抽象出一些公共内容,不单纯每次写类继承(麻烦), 提供出来给大家. Jig分为两种情况: graph TB Jig命令 --> 图元在数据库 --> 打开可写状态/只读貌似也行 --> newJig.. --> 移动鼠标时修改图元字段 --> 通过事件刷 阅读全文
posted @ 2021-12-06 17:11 惊惊 阅读(1346) 评论(2) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2021-12-01 11:59 惊惊 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 动图演示 原理 分裂 通过一个轴向矩形(非旋转)边界进行中心点分裂四个轴向矩形, 0x01 插入时候会一直分裂四个矩形(总是平均的面积),当分裂面积小于你插入 图元矩形面积 就停止分裂. 0x02 限制树的深度,停止分裂. 0x03 Rect字段是int/long的话,每次扩大就是2次幂,最小分裂就 阅读全文
posted @ 2021-11-05 11:15 惊惊 阅读(2535) 评论(0) 推荐(0) 编辑
摘要: 调用初始化赋值 初始化图元的时候必须调用一下Entity.SetDatabaseDefaults();尤其是初始化填充(可以看到我代码做了一次预处理测试). 因为acad的不同版本会修改初始化赋值的顺序,导致此问题, 而且它报错的地方可能并不是提交事务到数据库时, 而是计算图元显示时: hatch. 阅读全文
posted @ 2021-10-29 01:27 惊惊 阅读(569) 评论(0) 推荐(0) 编辑
摘要: 输出配置文件 在cad的options命令面板中,使用配置选项卡的输出配置,你会得到一个.arg文件 .arg:将文件导出到桌面(可以改成.reg) 版本配置总表:运行regedit,导出此路径注册表到桌面: 计算机\HKEY_CURRENT_USER\SOFTWARE\Autodesk\AutoC 阅读全文
posted @ 2021-09-09 23:34 惊惊 阅读(1247) 评论(0) 推荐(0) 编辑
摘要: 开局一张图 透视变换可以形成一种近大远小的效果. 可以把左边变成右边,也可以把右边变成左边. cad在实现的时候需要把圆,弧,曲线等等采样成点集...逆变的时候可以依照一定规则将他们改回圆,弧,曲线之类的...这一步有一些cv经常用到的概念...真就cv,gl不分家呗🤣 说明 发现网络很多文章的透 阅读全文
posted @ 2021-08-08 21:04 惊惊 阅读(855) 评论(1) 推荐(0) 编辑
摘要: cad跨进程通讯Remoting 正在研究cad的跨进程通讯, 难点在于cad是服务端的话,让客户端直接调用暴露的接口,而不会暴露实现, 因此写了一个Remoting的案例,如下代码就可以进行了. 至于WCF工程,由于它的App.config处理有些地方不是很理解,之后再仔细研究. 动图演示 工程结 阅读全文
posted @ 2021-07-10 02:20 惊惊 阅读(539) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2021-06-17 23:45 惊惊 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 故事是这样的 回头看了一下 cad.net 操作cui和cuix含工具条 里面没有完成的地方,有一个地方是要导出一个dll函数, 关键这个函数在每个cad版本上面是有规律的,只是cpp编译的时候会译名差别. 然后我又不想一个个版本找出来之后用预处理...想导出所有的函数名,用正则查询指定的名称下的函 阅读全文
posted @ 2021-05-17 11:38 惊惊 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 前台选择集 如上图所示,桌子的选择集是通过界面函数去反映到后台,选区在线型中间的空白段也是选择不到这个图元,像素分析选区(可能利用显卡提供的函数)? 不过凭借二次过滤我们也可以实现相关的操作,就是没啥必要而已. ps:飞诗告诉我前台的ssget选择时候就是需要四周扩展,否则某些情况选不了(例如后台d 阅读全文
posted @ 2021-05-14 02:56 惊惊 阅读(1866) 评论(1) 推荐(0) 编辑
摘要: 原因 lisp语句: (setvar "dimtxt" 123) ;控制标注文字高度 当我们使用这些标注样式变量,会令标注出现<样式替代>,那么怎么去掉这个东西呢? (command "-dimstyle" "S" "dim100" "" "");保存样式 放弃<样式替代> [CommandMeth 阅读全文
posted @ 2021-05-03 00:38 惊惊 阅读(930) 评论(0) 推荐(0) 编辑
摘要: 版本说明 本文测试为Acad2008(Cui)和Acad2021(Cuix)的案例,应该能够涉及所有高低版本的操作. Cui是个xml,Cuix是个压缩包...知道好像没什么好处,还是应该调用管理器操作而不是序列化操作,除非你发现了其中的一些bug无法避免... 关于宏的说明,看这个桌子的链接 特别 阅读全文
posted @ 2021-04-19 12:31 惊惊 阅读(2057) 评论(0) 推荐(0) 编辑
摘要: 原因 今天遇到了一个加载dll出问题的情况,因为这个dll是cpp写的,而且是x86的,然后我一直用的x64来调用... 出现: System.BadImageFormatException:“试图加载格式不正确的程序。(异常来自HRESULT:Ox8007000B)” dll的实现 c/cpp的d 阅读全文
posted @ 2021-04-01 22:26 惊惊 阅读(2063) 评论(0) 推荐(0) 编辑
摘要: 投影三维图元到某个平面上 如果遇到复杂的三维图元,要先进行消隐hide命令,但是我还没研究好这个命令. 红色(1号色)是三维的,黄色(2号色)投影下来的,它是曲线,因为曲线是直线的父类.可以依照曲率转换为自己喜欢的直线或者多段线,圆弧等等. 命令 [CommandMethod("test_ty", 阅读全文
posted @ 2021-03-29 21:25 惊惊 阅读(1003) 评论(0) 推荐(0) 编辑
摘要: 说明 本功能就是直接点击cad图元获取vla函数,快速知道图元对应的方法和属性(存在可用的). 小贱贱他复刻了一个高版本用的vlisp小助手,因为他调用了高版本函数,导致没有Acad08版,我很郁闷,然后就在他的基础上造了一个net全版本通用的... 至于猫老师曾经实现过的,通过帮助文件实现参数获取 阅读全文
posted @ 2021-03-13 15:22 惊惊 阅读(1613) 评论(4) 推荐(0) 编辑
摘要: 首先问你一个问题,如果你要用命令改图元颜色,那么cad有256个颜色,你需要写256个命令来达到目的吗? 答案:不. 程序员都是喜欢偷懒的.那么如何实现呢?看本文就知道了. Lisp和c#的例子有点相似,都是利用了解释器进行动态编译. 由于想要尽可能兼容所有cad版本,就不采用AddCommand函 阅读全文
posted @ 2021-03-05 18:00 惊惊 阅读(1276) 评论(0) 推荐(0) 编辑
摘要: 生成二维码模式1:cad图元 来自edata的聊天记录节选,嘻嘻.. 调用命令 #if !HC2020 using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.Runtime; using Acap = Autodesk.AutoCAD.App 阅读全文
posted @ 2021-03-05 14:17 惊惊 阅读(971) 评论(2) 推荐(0) 编辑
摘要: 说明 从Acad2010开始, 在Autodesk.AutoCAD.Internal.Utils测试库中有一个新函数:GetTextExtents, 利用它可以获取文字宽度. 只不过事情往往没有那么简单, 如果文字带有符号,比如\U+00B2在cad代表平方上标, 这个是不会转换为上标再测量的... 阅读全文
posted @ 2021-03-02 21:04 惊惊 阅读(1031) 评论(0) 推荐(0) 编辑
摘要: 说明: 这篇可以用四叉树优化但是我懒用的暴力遍历🤣,见四叉树 由于cad自身的图元特性,标注作为一个复合型图元却没有做到磁性选择, 这样很糟糕,而我们非自定义图元的时候只能通过链式选择和断分标注模拟. 磁性选择:当存在共同点的时候,可以直接吸附起来,跟磁铁特性一样, 不是组也不是块参照,而是基于之 阅读全文
posted @ 2021-02-26 22:10 惊惊 阅读(896) 评论(3) 推荐(0) 编辑
摘要: 轻多段线与复杂实体 Polyline是轻多段线 Polyline2d和Polyline3d和PolyFaceMesh多面网格 等等这些是复杂实体,它们需要通过迭代器处理. 获取点集 先看一个通用的提取点集的做法,主要目的是针对轻多段线/二维多段线/三维多段线. public static parti 阅读全文
posted @ 2021-02-21 22:00 惊惊 阅读(1352) 评论(0) 推荐(0) 编辑
摘要: 查看架构位数 由于Acad2008市面上是有32位改的,然后才能让64位系统安装,所以为了验证架构位数而写: (strlen (vl-princ-to-string (vlax-get-acad-object))) =>39就是32位Autocad 获取内置函数 (setq lst (vl-remo 阅读全文
posted @ 2021-02-08 02:28 惊惊 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 有很多人问过这个问题,所以特意在博客贴出.. 取自Acad官方的博客 https://adndevblog.typepad.com/autocad/2012/06/paletteset-minimum-docked-width.html 原文: 我有一个PaletteSet,它包含一个工具栏,其宽度 阅读全文
posted @ 2021-02-04 16:04 惊惊 阅读(841) 评论(1) 推荐(2) 编辑
摘要: 凸包 参考 安德鲁算法 分治法(其中nfox的项目实现的是分治法) 多边形快速凸包算法(Melkman‘s Algorithm) 还可以这看cpp的代码: https://www.cnblogs.com/VividBinGo/p/11637684.html 定义 凸包又叫凸多边形,本篇文章可能混用两 阅读全文
posted @ 2021-01-16 01:56 惊惊 阅读(2193) 评论(1) 推荐(2) 编辑
摘要: 说明 如果重置过一次Acad08,然后直接创建文档,那么你会得到一个致命错误. 然后你会重启cad,再创建文件,这个时候就不会产生致命错误. 这个不起眼的bug似乎没有人去理它.. 直到我制作了文档栏,在文档栏上面创建文档,然后弹出了一个致命错误... 为了修复这个致命错误,我尝试了以下几个步骤: 阅读全文
posted @ 2020-12-25 00:29 惊惊 阅读(861) 评论(0) 推荐(0) 编辑
摘要: Acad多线程问题 先看下面两个问题 问题1:要如何等待Acad界面完成 Acad的 IExtensionApplication 接口实现时, 程序界面未完成(基本上正规程序都会是后台线程转为前台线程),若此时执行前台操作会出现: 新建图纸会致命错误 在获取Autodesk.Windows.Comp 阅读全文
posted @ 2020-12-23 17:39 惊惊 阅读(1130) 评论(0) 推荐(0) 编辑
摘要: 将WPF嵌入到Acad08的时候,vs调试期间能成功,但是直接运行cad就不成功了.具体如下: 调试环境: 这个问题 测试版本为Acad2008,在Acad2014已经没有了..中间版本不清楚.. 估计net3.5上都有..也就是08,09,10,11,12,13 问题如下: 利用vs debug调 阅读全文
posted @ 2020-12-12 18:04 惊惊 阅读(717) 评论(0) 推荐(0) 编辑
摘要: Cad文档栏的项目地址: https://gitee.com/inspirefunction/CadLabelBar 简述 首先感谢福萝卜提供了第一版的代码DuoTab的代码使得我们得以从原理上得到把net窗体嵌入到cad是可行的... 我们发现福萝卜的代码是基于WinForm的,而且是用VB.ne 阅读全文
posted @ 2020-12-06 07:03 惊惊 阅读(1510) 评论(1) 推荐(0) 编辑
摘要: 点在多段线内 轴向矩形 矩形只是多段线的一种解 轴向矩形(非旋转的矩形)可以利用坐标直接相减(速度最快), 因为CPU每秒50亿次计算,因此AABB包围盒作为四叉树节点,是非常快的. 同时注意类的实现,因为WPF的类有冗余设计,不太适合快速场景,需要自己构造一个.见四叉树 非轴向矩形(带旋转) 非轴 阅读全文
posted @ 2020-11-30 16:26 惊惊 阅读(1245) 评论(0) 推荐(0) 编辑
摘要: 前文提要 cad.net dll动态加载 目的 本质上来说dll的动态加载是为了不占用文件,不占用文件是为了重复编译, 重复编译是为了不重启cad就可以载入插件来调试, 那么vs要如何调试已经动态加载进来的东西呢? 所以我们此次研究调试[次插件项目]. 方法1 高版本cad的话,利用[主插件项目]来 阅读全文
posted @ 2020-11-27 21:24 惊惊 阅读(1663) 评论(0) 推荐(0) 编辑
摘要: 起因 我在这篇文 cad.net dll动态加载 上面提及了一个事情,在vs调试cad的时候如果这个时候使用 Assembly.Load(byte) 那么会出现obj\Debug占用而不是bin\Debug占用,这是为什么呢? 查阅了下面的类似的问题,发现都不太对的样子..... https://b 阅读全文
posted @ 2020-11-25 00:25 惊惊 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 首先第一个问题是java会提供一个虚拟机,然后c#的虚拟机在哪里呢? 众所周知的面试题,在clr runtime...What?公共语言运行时...这个烂名字....为什么起这个烂名字,因为微软避开"虚拟机"这个缓慢意思的词.. 回到问题来,那么unity3d的它的跨平台服务的c#脚本虚拟机呢? 然 阅读全文
posted @ 2020-11-23 18:00 惊惊 阅读(1241) 评论(0) 推荐(0) 编辑
摘要: 在 C:\Windows 内放的.bat .exe之类的都可以在"运行"(win+r)上面直接调用.... 但是一定要注意,放在这个目录的都是系统权限的... 而且这个目录bat都是要求Ansi编码否则中文乱码导致打开失败,现在win10默认都是utf-8需要另存为的时候改. 打开你同事在局域网很长 阅读全文
posted @ 2020-11-23 17:46 惊惊 阅读(594) 评论(0) 推荐(0) 编辑