You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写AutoCAD Lisp程序实现填充无交叉叠加放置

AutoCAD Lisp实现填充叠加无交叉的方案

效果示例:左侧为当前交叉混乱的填充效果,右侧为期望的叠加无交叉效果(后绘制填充覆盖先绘制填充的重叠区域,先绘制填充仅显示在后绘制填充下方)

核心逻辑

要解决多填充交叉混乱的问题,本质是让新填充的边界“裁剪”旧填充的重叠区域,同时保证新填充在视觉层级上处于上方,最终实现先绘制的填充仅显示在后绘制填充的外部区域。

具体实现步骤与代码思路

  • 1. 获取用户选择的填充对象
    用entsel函数让用户分别选中需要置顶的新填充和被覆盖的旧填充:
    (setq new-hatch (car (entsel "\n选择要放置在上方的填充: ")))
    (setq old-hatch (car (entsel "\n选择要被覆盖的填充: ")))
    
  • 2. 提取填充的边界与属性
    通过VLA接口获取填充的边界(转换为面域用于布尔操作),同时保存旧填充的图案名称、比例、角度等属性,确保裁剪后的填充和原属性一致:
    ; 处理旧填充属性与边界
    (setq old-vla (vlax-ename->vla-object old-hatch))
    (setq old-pattern (vlax-get old-vla 'PatternName))
    (setq old-scale (vlax-get old-vla 'PatternScale))
    (setq old-angle (vlax-get old-vla 'PatternAngle))
    (setq old-boundary (vlax-get old-vla 'Boundary))
    (setq old-region (car (vlax-invoke (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) "AddRegion" old-boundary)))
    
    ; 处理新填充边界
    (setq new-vla (vlax-ename->vla-object new-hatch))
    (setq new-boundary (vlax-get new-vla 'Boundary))
    (setq new-region (car (vlax-invoke (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) "AddRegion" new-boundary)))
    
  • 3. 布尔差集裁剪旧填充
    对旧填充的面域和新填充的面域执行差集操作,得到旧填充减去重叠区域后的新边界,随后删除原旧填充,用新边界重新创建填充并还原属性:
    ; 执行布尔差集:旧区域减去新区域,保留非重叠部分
    (vlax-invoke old-region 'Boolean acSubtract new-region)
    
    ; 删除原旧填充与临时面域
    (vla-delete old-vla)
    (vla-delete new-region)
    
    ; 创建裁剪后的新填充
    (setq new-old-hatch (vla-AddHatch (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) acUserDefined old-pattern :vlax-true))
    (vla-AppendOuterLoop new-old-hatch old-region)
    (vla-put-PatternScale new-old-hatch old-scale)
    (vla-put-PatternAngle new-old-hatch old-angle)
    (vla-Evaluate new-old-hatch)
    
  • 4. 调整填充显示层级
    将新填充置顶,确保视觉上处于最上层:
    (vla-SendToFront new-vla)
    

注意事项

  • 填充的边界必须是闭合的多段线、面域或闭合曲线,否则布尔操作会报错。
  • 若需要处理多个旧填充,可通过ssget选择多个实体,循环执行上述裁剪逻辑。
  • 操作前建议备份图纸,避免误操作导致数据丢失。

内容的提问来源于stack exchange,提问作者Edward Zotov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:34:53