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. Android UI开发第二十七篇——实现左右划出菜单
  2. 豆瓣9.8分,周志明的《凤凰架构》,高屋建瓴,推荐(送书)
  3. mybatis-plus中 queryWrapper查询对象常见方法
  4. Dapr微服务应用开发系列0:概述
  5. mysql 数据如何存储,MySQL如何存储数据
  6. jQuery实现两个列表框的值之间的互换:
  7. 调用kmeans_聚类分析—KMeans
  8. java 枚举迭代_Java中的枚举和迭代器之间的区别
  9. 秋高气爽FreeEIM
  10. Promise源码学习(2)
  11. 用户控件与自定义控件
  12. Windows XP终极优化设置(精心整理)
  13. 纯CSS实现的炫酷HOVER效果
  14. 领克车机2.0安装 app 方法,亲测有效
  15. 手机号正则(2020年4月15日)
  16. linux高性能服务器编程PDF源代码下载
  17. Python 文件IO操作
  18. 双目是个词吗_描写眼睛的词语3个字
  19. tkMapper插件的详细讲解
  20. 七种常见阈值分割代码(Otsu、最大熵、迭代法、自适应阀值、手动、迭代法、基本全局阈值法)...

热门文章

  1. 利用日志管理,溯源追踪解决安全问题
  2. 湖大计算机考研范围,湖大计算机829考研要点提要(来自于湖南历年真题,整理不易)...
  3. Linux接蓝牙音响无声音,win10蓝牙音箱没有声音怎么办_win10蓝牙音响连接成功没声音处理方法...
  4. 杭电2154-跳舞毯
  5. 理解复数域上的向量空间
  6. 02_安装nginx-银河麒麟V10(Kylin Linux Advanced Server V10 (Tercel))操作系统
  7. [系统安全] 逆向工程进阶篇之对抗逆向分析
  8. python获取所有上市公司的加权净资产收益率
  9. 2019~2020数字货币领域发展趋势报告
  10. LSI阵列卡的使用教程