明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 22777|回复: 139

阿甘动态复制V4.0-自动正交版 (动态旋转、镜像、缩放、改基点、对齐)

    [复制链接]
发表于 2021-6-16 20:12:52 | 显示全部楼层 |阅读模式
本帖最后由 print1985 于 2022-4-27 18:03 编辑



免费了这么多年,这次增加新功能收个币
(免费版:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=172208&page=1#pid770885http://bbs.xdcad.net/thread-727518-1-1.html
本版新增功能:复制、移动时自动正交,创意来自论坛960322朋友(感谢,加个鸡腿)。

本程序功能比较强大,日常应用完全可以替代CAD原版命令,用同事的话说就是:用了就回不去。绝对对得起一个币!

功能:
1、复制的同时可动态旋转、镜像、缩放、改基点、对齐;支持正交、极轴、捕捉。
2、可轻量级代替cad原版命令,如果选择图元太多(默认1000个,可修改),则自动切换为原版CAD命令,以免影响复制速度。
3、本次新增自动正交功能,可开关,可设置自动正交的距离(经测试,采用距离比采用角度判断更合适)

使用方法:
1、修改lisp内DLL文件路径,加载lisp即可(修改路径之后lisp启动会自动加载dll)
2、快捷键默认为:复制c、移动m,可修改
3、正交设置命令为:agco

其它说明:
1、目前只支持2007-2022版本(低版本缺函数无法支持),理论上支持此区间的所有版本。
2、win10暂时没测试,理论上支持。
(如果因上述2种情况而无法使用的我可以退币)
3、可用netload命令手动加载DLL文件,如果win10无法加载,请把DLL设为管理员取得所有权或加入CAD支持库路径测试。
4、lisp+c#混合编程,c#解决动态显示,lisp解决选择集复制、移动等(c#的普通克隆和深度克隆都存在一些问题,比如无法带编组复制、带扩展数据复制等,还是用cad原生命令好,速度也不慢,完全能正常使用)lisp为源码,也可自行修改实现其它功能。

免责声明:
1、第二次收币,请三思后下载,别下载了之后又说没用。
2、水平有限,错误难免,测试前请先保存图纸,有问题请反馈。

论坛下载的附件如果无法解压,请用修复软件修复
有baitang36大神的汇编版:http://bbs.mjtd.com/thread-182499-1-1.html
highflybird大神C++版:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=182515&highlight=%D0%DE%B8%B4
tryhi大神的lisp版:http://bbs.mjtd.com/thread-182474-1-1.html
感谢各位大神

对不起各位,因最近发现本人发的个别插件、源码被人挂网上贩卖,虽然没啥技术含量,但是也是花了时间做的。为了不被后面的二手贩子继续利用,忍心下架所有成品插件,敬请理解,确实需要本插件的朋友可以给我留言。

本帖子中包含更多资源

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

x

评分

参与人数 6明经币 +6 金钱 +55 收起 理由
yocoi + 1 + 5 很给力!
lucas_3333 + 1 + 50 支持阿甘,强烈鄙视拿别人的码卖钱的!下辈.
USER2128 + 1 很给力!
start4444 + 1 很给力!
lee50310 + 1 赞一个!
tigcat + 1 很给力!

查看全部评分

发表于 2021-9-18 21:27:47 | 显示全部楼层
(defun c:tt5 (/ ent ss)
  (defun *error* (msg)
    (if ss (sshighlight ss 4)) ;取消亮显
    (princ "error:")
    (princ msg)
  )
  (setq a (cadr (ssgetfirst)))
  (if a
    (setq ss a)
    (setq ss (ssget))
  )


  (setvar "cmdecho" 0)
  (command "undo" "g")
  ;;预选择函数段必须在这一句之前,否则无效
  (setq pt Nil)
  (sshighlight ss 3)
  (setq p1 (getpoint "指定基点: "))
  (princ "\n")

  (if p1
    (progn
      (while (not (equal p1 pt 1e-4))
        (setq ent (entlast))
        (setq pt p1)
        (princ "指定下一点: ")

        (vl-cmdf "copy" ss "" "non" pt pause)

        (setq tempss ss)
        (setq ss (entbackss ent))
        (setq p1 (getvar "lastpoint"))
      )
      (command "._erase" ss)
      (command "select" tempss "")
    )

    (princ "\n未指定基准点,程序结束\n")
  )
)

;控制选择集亮显
(defun sshighlight (ss n / slen i  ent )
  (setq slen (sslength ss) i 0 )
  (while (ssname ss i)
    (setq ent (ssname ss i))
    (redraw ent n);亮显
    (setq i (1+ i))
  )
  T
)

大侠请教下,我这个程序按你的修改了下,然后就是想知道选择集超过1000的时候,使用默认的复制命令,该怎么改呢,程序本身是不是也有一些问题,能否帮忙优化优化呢
回复 支持 0 反对 1

使用道具 举报

发表于 2021-6-17 09:24:58 | 显示全部楼层
单纯的CAD的copy命令好像有个祖传bug,就是copy后选择第二个点的时候容易进入循环捕捉,导致致命错误。我的做法是人为修改copy的操作,但是丢失了copy的动画效果。以后就用大师的代码了
回复 支持 0 反对 1

使用道具 举报

发表于 2021-9-22 11:11:39 | 显示全部楼层
图片没办法上传上去,win10 2020,加载出错,NETLOAD 无法加载程序集。错误详细信息: System.IO.FileLoadException: 未能加载文件或程序集“file:///C:\Program Files\Autodesk\AutoCAD 2020\Support\CAD小工具\阿甘动态复制V4.0(CAD2007_2022版)\动态复制CAD2013~2022版\DrawJigCopy.dll”或它的某一个依赖项。不支持操作。 (异常来自 HRESULT:0x80131515)
文件名:“file:///C:\Program Files\Autodesk\AutoCAD 2020\Support\CAD小工具\阿甘动态复制V4.0(CAD2007_2022版)\动态复制CAD2013~2022版\DrawJigCopy.dll” ---> System.NotSupportedException: 尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理。此发行版的 .NET Framework 默认情况下不启用 CAS 策略,因此,此加载可能会很危险。如果此加载不是要对程序集进行沙盒处理,请启用 loadFromRemoteSources 开关。有关详细信息,请参见 http://go.microsoft.com/fwlink/?LinkId=155569
   在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   在 System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
   在 System.Reflection.Assembly.LoadFrom(String assemblyFile)
   在 Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
   在 loadmgd()

发表于 2021-6-16 22:30:47 | 显示全部楼层
大神的版本 必须一路支持,又一佳作,感谢分享
发表于 2021-6-16 23:47:57 | 显示全部楼层
本帖最后由 lee50310 于 2021-6-17 08:45 编辑

哈哈! 不巧 我也寫了 一個 剛測試完成  上來論壇 發現樓主早了 一步
        所以這簡易版,看看執行的動態圖就好
        這個也是動態複製程式 設定 角度介於 0 到 45 內會打開正交   大於4ˊ5度 到 360度則關閉正交

       註:  將滑鼠游標 角度移到 0與45之間 注意動態圖下方的 模型欄位旁  正交開關會被打開 ,移到其他角度則關閉


本帖子中包含更多资源

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

x

点评

很棒啊 是lisp写的吗?  发表于 2021-6-18 13:24
发表于 2021-6-17 07:11:21 | 显示全部楼层
本帖最后由 xj6019 于 2021-6-17 08:32 编辑

老大,能在现在的基础上,帮我整理出一个插入块的码来吗,我现在插入块,是点击到一个点后,才能键盘控制方向,如果能用你这种方式,在放置前就先把方向调整好,那就更直观,更完美了,拜托,麻烦了。抽空帮搞一下可以吗。

插入需要可循环插入,能放大缩小,旋转可调成空格控制,H是水平镜像  V 是垂直镜像 这几个就够用了

点评

是像天正一样的插入图块?插入的时候可以动态调整。可以把你的代码发看看?  发表于 2021-6-18 13:48
发表于 2021-6-17 08:23:23 | 显示全部楼层
谢谢大师分享
发表于 2021-6-17 09:08:13 | 显示全部楼层
支持大神,牛
发表于 2021-6-17 09:11:29 | 显示全部楼层
本帖最后由 lee50310 于 2021-6-17 09:29 编辑
xj6019 发表于 2021-6-17 07:11
老大,能在现在的基础上,帮我整理出一个插入块的码来吗,我现在插入块,是点击到一个点后,才能键盘控制方 ...

插入塊的程式 我之前有發表一個 跟你的需求類似, 聯結點在下方:

http://bbs.mjtd.com/thread-183519-1-1.html

你可參考看看
发表于 2021-6-17 09:25:02 | 显示全部楼层
lee50310 发表于 2021-6-17 09:11
插入塊的程式 我之前有發表一個 跟你的需求類似, 聯結點在下方:

http://bbs.mjtd.com/thread-183519- ...

嗯  你的下载过,不过下载了没仔细研究,今天有空,我看一下
发表于 2021-6-17 09:36:53 | 显示全部楼层
复制或移动命令下,在选第二个点之前,鼠标移到到的位置上的图元无法显示全。这个问题会考虑解决吗,差这个就完美了。

点评

鼠标移到到的位置上的图元无法显示全,是什么意思呢?能截图看下?  发表于 2021-6-18 13:29
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 02:51 , Processed in 0.325075 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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