延伸模块 > Advanced Machining > Machining 自定义 > Modeling - Machining - Integration Kit - 孔定义
  
Modeling - Machining - Integration Kit - 孔定义
MACHADV-DEFINE-HOLE [宏]
加工模块提供 LISP 宏,此宏可用于创建具有自由阶梯横截面的孔。创建孔的几何的代码也可以将公差和螺纹信息连接到模型。
(cad-cam-link-ui::machadv-define-hole ....)
参数:
名称
数据类型
类型
说明
:part
SEL_ITEM
必须
要在其中钻孔的零件。
* 
宏不会更改当前零件设置。
:axis-start-pos
GPNT3D
必须
孔的起始位置,即轴穿过起始面的位置
:axis-dir
GPNT3D
必须
孔的轴方向,通常是镗孔操作的轴
:feature-name
字符串
可选
特征的名称 (在结构浏览器中可见),如果未给定该参数或将其设置为 NIL,则根本不会命名特征
:feature-type
关键字
必须
该参数当前处于固定状态,可能值仅有 NIL 和 :cad-cam-link-stepped-hole,以后会提供可能值的列表
:constructor
LISP 形式
必须
一种 Lisp 形式,在内部 sd-call-cmds 之内对其进行评估,以创建孔的几何表示,并且定义螺纹。
有关此形式限制的详细信息,请参阅 documentation about sd-call-cmds。(此链接仅在英语文档中可用。)
:success
LISP 形式
可选
一种 Lisp 形式,在构造函数形式没有导致错误时对其进行评估。
这是在 sd-call-cmds (用于在评估成功形式期间评估构造函数形式) 之内用作成功形式的形式,全局变量 *SD-ACTION-RESULT* 绑定到在构造函数形式之内调用的最后一个操作例程的操作结果。
:failure
LISP 形式
可选
一种 Lisp 形式,在构造函数形式导致错误时对其进行评估。这是在 sd-call-cmds (用于评估构造函数形式) 之内用作失败形式的形式。有关失败形式的详细信息,请参阅 documentation about sd-call-cmds。(此链接仅在英语文档中可用。)
限制:
所有适用于 sd-call-cmds 的限制在此处也适用。
横截面轮廓必须满足以下条件
由直线组成,产生圆柱面、圆锥面和平面底面,
创建一个主体 (如果它轮流用于创建对象)
创建真实孔,即对于起始面或终止面,轮廓必须延伸足够远。
创建孔的操作不允许创建不同特征,例如 O 型环密封的附加槽。
倒角必须由命令 CHAMFER 创建 (如果要将它们导出为倒角)。只需创建倒角的形状就可以将圆锥作为圆锥传递。
计划在后续版本 (日期尚未确定) 中支持圆角,但是会应用与倒角相同的限制。
图1:支持的轮廓
图2:钻孔尖端可能切入材料
图3:由于凹槽而无效
图4:由于分隔成两个孔而无效
图5:由于倒钩而无效
图6:由于附加槽而无效
图7:由于附加圆角而无效
图8:由于圆锥孔而无效
示例
以下示例提取自 sd-defdialog,可创建直径为 40、20 的阶梯孔,且直径为 40 的阶梯孔之后将创建 4 个倒角。
:ok-action

'(let* ((part (sd-inq-curr-part))
(axis-start-pos origin)
(axis-dir 0,0,-1)
(feature-name)
(feature-type)

(poly_points '(0,0 60,0 60,20 50,20 50,10 10,10 10,20 0,20 :close))
)

(cad-cam-link-ui::machadv-define-hole

:part (oli::sd-inq-curr-part)

:axis-start-pos axis-start-pos
:axis-dir axis-dir

:feature-name feature-name

:feature-type feature-type
:constructor
`(let (
(curr-wp (sd-inq-curr-wp))
(geo-mode (sd-inq-geometry-mode))
)

(unless (eq geo-mode :real)
(geometry_mode :real)
)
(create_workplane
:new :pt_dir

:origin ,axis-start-pos

:normal :x :u_dir ,axis-dir
)

(apply #'polygon ',poly_points)

(bore :axis ,axis-dir :turn_angle (* 2.0 pi))

(chamfer :check :dist_angle
(sd-vec-add ,axis-start-pos

20,0,0) :new_angle_dist 1 45
(sd-vec-add ,axis-start-pos

10,0,-10) :new_angle_dist 2 45
(sd-vec-add ,axis-start-pos

10,0,-50) :new_angle_dist 3 45
(sd-vec-add ,axis-start-pos

20,0,-60) :new_angle_dist .5 45
)

(delete_3d (sd-inq-curr-wp))

(when curr-wp (CURRENT_WP curr-wp))

(unless (eq geo-mode :real)
(geometry_mode geo-mode)
)
)
)
)