Querying for XCLIP information inside AutoCAD using .NET  这里下面观众讨论了

How do I determine if an x-clip boundary is inverted?

看起来Autodesk忘记了通过API公开此设置,或将其包含在DXF输出中.
也许您可以通过调用 SpatialFilter.ClipVolumeIntersectsExtents() 来确定它,它的内容完全在边界之内.
该设置通过 DwgOutFields() 提交给DWG文件管理器,因此,如果所有其他操作均失败,则可以编写一个自定义AcDbDwgFiler来捕获该设置。 

首先说明一下,根据以上的帖子,我们会得到一个消息是,桌子并没有封装好cad的块裁剪边界翻转部分.

然后我翻了翻api,在Acad2015版本上面是已经加了一个 SpatialFilter.Inverted 这个函数.

而我们低版本需要的就是重写出一个 Inverted ..

最后要进行刷新.

这样就完成了.

但是要注意下面的函数,它们只是个例子,没有提供撤销回滚的时候要刷新的操作...这个部分大家自己自行制作.

命令主函数部分:

    public static partial class Command_jjMoveBlockCropBoundary{//选择图块,进行反向裁剪  [CommandMethod("test", CommandFlags.Modal | CommandFlags.UsePickSet | CommandFlags.Redraw | CommandFlags.Session)]public static void test(){Database db = HostApplicationServices.WorkingDatabase;//当前的数据库Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;var peo = new PromptEntityOptions(Environment.NewLine + "点选图块:"){AllowObjectOnLockedLayer = false,AllowNone = false};var gt = ed.GetEntity(peo);if (gt.Status != PromptStatus.OK){return;}using (Application.DocumentManager.MdiActiveDocument.LockDocument())//锁文档  用CommandFlags.Session就要锁,否则eLockViolation
            {using (Transaction tr = db.TransactionManager.StartTransaction()){var ent = tr.GetObject(gt.ObjectId, OpenMode.ForRead);if (ent is BlockReference acBlkRef){SpatialFilter blockBoundaryInfo = BlockBoundaryInfo(acBlkRef, tr);//块裁剪边界信息   if (blockBoundaryInfo != null){//直接设置为反向
                            blockBoundaryInfo.UpgradeOpen();
#if false //这个在2015以上版本有,但是下面的操作是通用的blockBoundaryInfo.Inverted = !blockBoundaryInfo.Inverted;
#endifvar fa = blockBoundaryInfo.Inverted(out XmDwgFiler xmDwgFiler);blockBoundaryInfo.SetInverted(xmDwgFiler);blockBoundaryInfo.DowngradeOpen();acBlkRef.UpgradeOpen();acBlkRef.RecordGraphicsModified(true);//记录图元已修改,这个之前要ent.UpgradeOpen()
                            acBlkRef.DowngradeOpen();}}tr.Commit();}}}

View Code

判断和设置部分.

        /// <summary>/// 边界是否为反向裁剪/// </summary>/// <param name="spatialFilter">裁剪信息</param>/// <returns></returns>public static bool Inverted(this SpatialFilter spatialFilter, out XmDwgFiler xmDwgFiler){xmDwgFiler = new XmDwgFiler();spatialFilter.DwgOut(xmDwgFiler);var f = xmDwgFiler.UInt16List[1];if (f != 1){return false;}else{return true;}}/// <summary>/// 设定反向裁剪/// </summary>/// <param name="spatialFilter">裁剪数据</param>/// <param name="xmDwgFiler">原始数据</param> /// <returns></returns>public static void SetInverted(this SpatialFilter spatialFilter, XmDwgFiler xmDwgFiler){if (xmDwgFiler.UInt16List[1] == 1){xmDwgFiler.UInt16List[1] = 0;}else{xmDwgFiler.UInt16List[1] = 1;}spatialFilter.DwgIn(xmDwgFiler);}

继承DwgFiler的类,超长的部分...

    public class XmDwgFiler : DwgFiler{public FilerType m_FilerType;public ErrorStatus m_FilerStatus;public
#if AC2008int
#elselong
#endifm_Position;//保存数据属性public List<IntPtr> AddressList { get; set; }public int AddressListPt = 0;public List<byte[]> BinaryChunkList { get; set; }public int BinaryChunkListPt = 0;public List<bool> BooleanList { get; set; }public int BooleanListPt = 0;public List<byte> ByteList { get; set; }public int ByteListPt = 0;public List<byte[]> BytesList { get; set; }public int BytesListPt = 0;public List<double> DoubleList { get; set; }public int DoubleListPt = 0;public List<Handle> HandleList { get; set; }public int HandleListPt = 0;public List<ObjectId> HardOwnershipIdList { get; set; }public int HardOwnershipIdListPt = 0;public List<ObjectId> HardPointerIdList { get; set; }public int HardPointerIdListPt = 0;public List<short> Int16List { get; set; }public int Int16ListPt = 0;public List<int> Int32List { get; set; }public int Int32ListPt = 0;public List<long> Int64List { get; set; }public int Int64ListPt = 0;public List<Point2d> Point2dList { get; set; }public int Point2dListPt = 0;public List<Point3d> Point3dList { get; set; }public int Point3dListPt = 0;public List<Scale3d> Scale3dList { get; set; }public int Scale3dListPt = 0;public List<ObjectId> SoftOwnershipIdList { get; set; }public int SoftOwnershipIdListPt = 0;public List<ObjectId> SoftPointerIdList { get; set; }public int SoftPointerIdListPt = 0;public List<string> StringList { get; set; }public int StringListPt = 0;public List<ushort> UInt16List { get; set; }public int UInt16ListPt = 0;public List<uint> UInt32List { get; set; }public int UInt32ListPt = 0;public List<ulong> UInt64List { get; set; }public int UInt64ListPt = 0;public List<Vector2d> Vector2dList { get; set; }public int Vector2dListPt = 0;public List<Vector3d> Vector3dList { get; set; }public int Vector3dListPt = 0;//构造函数public XmDwgFiler(){m_FilerType = FilerType.CopyFiler;m_FilerStatus = ErrorStatus.OK;m_Position = 0;AddressList = new List<IntPtr>();BinaryChunkList = new List<byte[]>();BooleanList = new List<bool>();ByteList = new List<byte>();BytesList = new List<byte[]>();DoubleList = new List<double>();HandleList = new List<Handle>();HardOwnershipIdList = new List<ObjectId>();HardPointerIdList = new List<ObjectId>();Int16List = new List<short>();Int32List = new List<int>();Int64List = new List<long>();Point2dList = new List<Point2d>();Point3dList = new List<Point3d>();Scale3dList = new List<Scale3d>();SoftOwnershipIdList = new List<ObjectId>();SoftPointerIdList = new List<ObjectId>();StringList = new List<string>();UInt16List = new List<ushort>();UInt32List = new List<uint>();UInt64List = new List<ulong>();Vector2dList = new List<Vector2d>();Vector3dList = new List<Vector3d>();}public override IntPtr ReadAddress(){if (AddressList.Count() == 0){return new IntPtr();}return AddressList[AddressListPt++];}public override byte[] ReadBinaryChunk(){if (BinaryChunkList.Count() == 0){return null;}return BinaryChunkList[BinaryChunkListPt++];}public override bool ReadBoolean(){if (BooleanList.Count() == 0){return false;}return BooleanList[BooleanListPt++];}public override byte ReadByte(){if (ByteList.Count() == 0){return 0;}return ByteList[ByteListPt++];}public override void ReadBytes(byte[] value){if (ByteList.Count() == 0){return;}value = new byte[BytesList[BytesListPt].Length];BytesList[BytesListPt++].CopyTo(value, 0);}public override double ReadDouble(){if (DoubleList.Count() == 0){return 0;}return DoubleList[DoubleListPt++];}public override Handle ReadHandle(){if (HandleList.Count() == 0){return new Handle();}return HandleList[HandleListPt++];}public override ObjectId ReadHardOwnershipId(){if (HardOwnershipIdList.Count() == 0){return new ObjectId();}return HardOwnershipIdList[HardOwnershipIdListPt++];}public override ObjectId ReadHardPointerId(){if (HardPointerIdList.Count() == 0){return new ObjectId();}return HardPointerIdList[HardPointerIdListPt++];}public override short ReadInt16(){if (Int16List.Count() == 0){return 0;}return Int16List[Int16ListPt++];}public override int ReadInt32(){if (Int32List.Count() == 0){return 0;}return Int32List[Int32ListPt++];}public override Point2d ReadPoint2d(){if (Point2dList.Count() == 0){return new Point2d();}return Point2dList[Point2dListPt++];}public override Point3d ReadPoint3d(){if (Point3dList.Count() == 0){return new Point3d();}return Point3dList[Point3dListPt++];}public override Scale3d ReadScale3d(){if (Scale3dList.Count() == 0){return new Scale3d();}return Scale3dList[Scale3dListPt++];}public override ObjectId ReadSoftOwnershipId(){if (SoftOwnershipIdList.Count() == 0){return new ObjectId();}return SoftOwnershipIdList[SoftOwnershipIdListPt++];}public override ObjectId ReadSoftPointerId(){if (SoftPointerIdList.Count() == 0){return new ObjectId();}return SoftPointerIdList[SoftPointerIdListPt++];}public override string ReadString(){if (StringList.Count() == 0){return null;}return StringList[StringListPt++];}public override ushort ReadUInt16(){if (UInt16List.Count() == 0){return 0;}return UInt16List[UInt16ListPt++];}public override uint ReadUInt32(){if (UInt32List.Count() == 0){return 0;}return UInt32List[UInt32ListPt++];}public override Vector2d ReadVector2d(){if (Vector2dList.Count() == 0){return new Vector2d();}return Vector2dList[Vector2dListPt++];}public override Vector3d ReadVector3d(){if (Vector3dList.Count() == 0){return new Vector3d();}return Vector3dList[Vector3dListPt++];}public override void ResetFilerStatus(){AddressList.Clear();AddressListPt = 0;BinaryChunkList.Clear();BinaryChunkListPt = 0;BooleanList.Clear();BooleanListPt = 0;ByteList.Clear();ByteListPt = 0;BytesList.Clear();BytesListPt = 0;DoubleList.Clear();DoubleListPt = 0;HandleList.Clear();HandleListPt = 0;HardOwnershipIdList.Clear();HardOwnershipIdListPt = 0;HardPointerIdList.Clear();HardPointerIdListPt = 0;Int16List.Clear();Int16ListPt = 0;Int32List.Clear();Int32ListPt = 0;Int64List.Clear();Int64ListPt = 0;Point2dList.Clear();Point2dListPt = 0;Point3dList.Clear();Point3dListPt = 0;Scale3dList.Clear();Scale3dListPt = 0;SoftOwnershipIdList.Clear();SoftOwnershipIdListPt = 0;SoftPointerIdList.Clear();SoftPointerIdListPt = 0;StringList.Clear();StringListPt = 0;UInt16List.Clear();UInt16ListPt = 0;UInt32List.Clear();UInt32ListPt = 0;UInt64List.Clear();UInt64ListPt = 0;Vector2dList.Clear();Vector2dListPt = 0;Vector3dList.Clear();Vector3dListPt = 0;m_FilerType = FilerType.CopyFiler;}public override string ToString(){int ptCount =AddressListPt +BinaryChunkListPt +BooleanListPt +ByteListPt +BytesListPt +DoubleListPt +HandleListPt +HardOwnershipIdListPt +HardPointerIdListPt +Int16ListPt +Int32ListPt +Int64ListPt +Point2dListPt +Point3dListPt +Scale3dListPt +SoftOwnershipIdListPt +SoftPointerIdListPt +StringListPt +UInt16ListPt +UInt32ListPt +UInt64ListPt +Vector2dListPt +Vector3dListPt;int ltCount =AddressList.Count() +BinaryChunkList.Count() +BooleanList.Count() +ByteList.Count() +BytesList.Count() +DoubleList.Count() +HandleList.Count() +HardOwnershipIdList.Count() +HardPointerIdList.Count() +Int16List.Count() +Int32List.Count() +Int64List.Count() +Point2dList.Count() +Point3dList.Count() +Scale3dList.Count() +SoftOwnershipIdList.Count() +SoftPointerIdList.Count() +StringList.Count() +UInt16List.Count() +UInt32List.Count() +UInt64List.Count() +Vector2dList.Count() +Vector3dList.Count();return"\n" + ptCount.ToString() + " DataIn" +"\n" + ltCount.ToString() + " DataOut";}public override void WriteAddress(IntPtr value){AddressList.Add(value);}public override void WriteBinaryChunk(byte[] chunk){BinaryChunkList.Add(chunk);}public override void WriteBoolean(bool value){BooleanList.Add(value);}public override void WriteByte(byte value){ByteList.Add(value);}public override void WriteBytes(byte[] value){BytesList.Add(value);}public override void WriteDouble(double value){DoubleList.Add(value);}public override void WriteHandle(Handle handle){HandleList.Add(handle);}public override void WriteHardOwnershipId(ObjectId value){HardOwnershipIdList.Add(value);}public override void WriteHardPointerId(ObjectId value){HardPointerIdList.Add(value);}public override void WriteInt16(short value){Int16List.Add(value);}public override void WriteInt32(int value){Int32List.Add(value);}public override void WritePoint2d(Point2d value){Point2dList.Add(value);}public override void WritePoint3d(Point3d value){Point3dList.Add(value);}public override void WriteScale3d(Scale3d value){Scale3dList.Add(value);}public override void WriteSoftOwnershipId(ObjectId value){SoftOwnershipIdList.Add(value);}public override void WriteSoftPointerId(ObjectId value){SoftPointerIdList.Add(value);}public override void WriteString(string value){StringList.Add(value);}public override void WriteUInt16(ushort value){UInt16List.Add(value);}public override void WriteUInt32(uint value){UInt32List.Add(value);}public override void WriteVector2d(Vector2d value){Vector2dList.Add(value);}public override void WriteVector3d(Vector3d value){Vector3dList.Add(value);}public override ErrorStatus FilerStatus{get{return m_FilerStatus;}set{m_FilerStatus = value;}}public override FilerType FilerType{get{return this.m_FilerType;}}#if !AC2008public override long ReadInt64(){if (Int64List.Count() == 0){return 0;}return Int64List[Int64ListPt++];}public override ulong ReadUInt64(){if (UInt64List.Count() == 0){return 0;}return UInt64List[UInt64ListPt++];}public override void WriteInt64(long value){Int64List.Add(value);}public override void WriteUInt64(ulong value){UInt64List.Add(value);}
#endif//https://www.eabim.net//forum.php/?mod=viewthread&tid=169503&extra=page%3D1&page=1&public override void Seek(
#if AC2008int
#elselong
#endifoffset, int method){Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;ed.WriteMessage(MethodInfo.GetCurrentMethod().Name + " = " + " \n ");}public override
#if AC2008int
#elselong
#endifPosition{get{return m_Position;}}} 

View Code

转载于:https://www.cnblogs.com/JJBox/p/11614714.html

cad.net 块裁剪边界反向修剪相关推荐

  1. cad中explode是什么意思_为什么CAD图块炸开后多了很多图形?

    一周内已经有两个人问这样的问题了:图中只有几个图块,结果炸开后多了好多东西,满屏都是图,炸开前后的效果如下图所示. 这个问题其实之前讲过,只是讲解的角度不同.原因很简单:图块里原来就有这么多东西,只是 ...

  2. bin文件用cad打开_dwg文件怎么打开?CAD看图,360°精确识别CAD图块,细节见真章...

    当我们看CAD图纸的时候,CAD看图软件是否能够清晰的识别CAD图纸中的每一处细节?如何360°准确识别每一个CAD图块?迅捷CAD看图教你正确的CAD看图方法! 下面给大家介绍CAD看图软件是如何3 ...

  3. cad动态块制作翻转_定制橱柜家具中CAD门型动态块制作方式图文讲解加视频

    在定制橱柜家具中,我们用CAD我们经常会用一些门型放置到绘图当中,来展示CAD图纸的美观性,如下图: 那么这些门型要是一点点画却是麻烦,所以我们可以把门型做成动态快的形式,对门型进行任意拉伸,方便我们 ...

  4. cad动态块制作翻转_装X必学,手把手教你做CAD动态属性块

    最近很多粉丝后台问熊大,如何制作CAD动态属性块,这个问题把我难到了. 因为这个不是一句两句话能够说得清楚的,于是我拿出珍藏的"西蜀鄙夫"写的教程,并通过与我们设计过程的实际需要给 ...

  5. cad插入块_CAD中的quot;块quot;能否修改?能!一个命令可快速解决

    "块"在CAD中用得比较多,为了提高制图的效率,在CAD中往往定义了各种各样的"块",比方说:对于机械制图,为了快速插入表面粗糙度,通常将表面粗糙度符号定义为一 ...

  6. CAD中怎么修改图块名称?CAD图块改名教程

    在使用正版CAD软件绘制建筑图纸的过程中,进行CAD图块编辑的时候偶尔需要给图块改名,这个时候该如何操作呢?下面的CAD教程就让小编来给大家介绍一下正版CAD软件--浩辰CAD建筑软件中CAD图块编辑 ...

  7. CAD图块全攻略:别羡慕我下班早,我的CAD软件会开挂!

    在使用浩辰CAD软件进行工程设计的过程中,一些CAD图形元素会被多次重复使用,例如机械行业中的螺钉.螺母等标准紧固件.这些高频使用的CAD图形,如果每次都重新设计和绘制,十分麻烦费时.因此,在浩辰CA ...

  8. 如何将CAD图块转换成外部参照?

    在CAD绘图过程中如果想要将图纸中的某个CAD图块替换成外部参照的话该如何操作呢?本文小编就以浩辰CAD软件为例来给大家分享一下CAD图块转换成外部参照的具体操作步骤吧! 浩辰CAD软件中可以通过调用 ...

  9. CAD图块无法分解怎么办?CAD块分解教程

    大家在CAD绘图过程中,是不是经常会遇到CAD图块无法分解的情况?那么该如何解决呢?下面就和小编一起来了解一下浩辰CAD软件中CAD图块无法分解的原因以及解决办法吧! 1.多重插入块 当CAD图纸中的 ...

  10. CAD图块:什么是动态块?CAD动态块怎么使用?

    对于CAD图块的创建与应用,大部分设计师并不陌生.在CAD软件中通过快速调用的图块资源,设计师可以快速设计和美化CAD图纸.然而除了静态的图块,浩辰CAD软件还能绘制带参数.可直接编辑的「动态块」,让 ...

最新文章

  1. 敏捷团队如何通过Leangoo领歌迭代看板进行迭代规划和任务协同
  2. php请求来源,如何用PHP获取请求的来源?
  3. VUE 笔记(持续更新中...)
  4. django之模板语法
  5. c语言中c为字符型便量,c='97'是否正确,C语言判断题Word版
  6. vue鼠标右键自定义菜单_vue-右键菜单功能
  7. mysql 用户概念_传输概念 – db对象的用户/组/权限从mysql到postgresql
  8. 嵌套类型的前5个用例
  9. VSAN常见故障2018-11-06
  10. 赛锐信息:集团化公司SAP权限管控解决方案
  11. 火山图 多个样本、_statTarget-基于QC样本的代谢组学数据校正
  12. WinDriver 安装
  13. COGS 1008 贪婪大陆
  14. QT——Qt QtCreator 官方下载地址
  15. [leetcode/lintcode 题解] 谷歌面试题:基因相似度
  16. Laravel框架中上传图片
  17. 二叉排序树实现英文文章单词统计
  18. js(Mandango:壮汉专用,电影院划位工具)
  19. 萌新小白的历程以及下一步开发方案,请求全栈大佬的指点鸭!
  20. 微信分销试试汉全的解决方案

热门文章

  1. 计算机设计大赛英语怎么说,全国大学生计算机设计大赛国赛参赛指南
  2. contextcapture多区块点云_Smart 3D (ContextCapture) 4.4.6版本最新功能
  3. 中国古代衣食住行 3
  4. python中abs函数是什么意思_python abs函数怎么用
  5. 谷歌发布 Android 12 硬件标准:6GB内存+1080P屏幕
  6. 设计窗口模拟教室座位表java,基于web的考研自习教室座位管理(完整源码+论文全套+教学视频)...
  7. 婚宴座位图html5,婚宴座位安排图 婚宴主桌安排示意图
  8. 腾达ap设置说明_腾达(Tenda)F9无线路由器AP模式怎么设置[教程]?【图解】
  9. 去除xp系统计算机多余的系统,WinXP电脑如何清理垃圾?
  10. 【软考信息系统项目管理师】必背重点之信息化和信息系统