【问题标题】:Catia sketch constraints using python使用python的Catia草图约束
【发布时间】:2021-08-30 09:22:45
【问题描述】:

我正在尝试使用 Python 在 CATIA V5 上绘制草图。我使用 VB 制作的 Catia 宏。但是错误仍然存​​在。我无法约束草图。 这是我的代码,以及我得到的错误:

from win32com.client import constants, Dispatch
import math as m

# Binding python session into CATIA
CATIA = Dispatch("CATIA.Application")
#Création du document
mon_document_piece = CATIA.Documents.Add("Part")
ma_piece = mon_document_piece.Part
mes_corps_de_piece = ma_piece.Bodies

#Définition de l'objet de travail
corps_de_travail = mes_corps_de_piece.Item("Corps principal")
ma_piece.InWorkObject = corps_de_travail
mes_esquisses = corps_de_travail.Sketches
#Choix de l'élément de référence pour crer l'esquisse, ici le plan XY
ma_reference = ma_piece.originElements.PlaneYZ
mon_esquisse = mes_esquisses.Add(ma_reference)

#Définir l'objet de travail
ma_piece.InWorkObject = mon_esquisse
#Edition de l'esquisse
ma_construction2D = mon_esquisse.OpenEdition()
droite_A = ma_construction2D.CreateLine(A/2, 0 , A/2, Ddia+A)
droite_Ddia = ma_construction2D.CreateLine(0, Ddia/2 , Ddia+A, Ddia/2)
cercle_Jr = ma_construction2D.CreateClosedCircle(A/2-Jr,Ddia/2-Jr,Jr)
droite_beta = ma_construction2D.CreateLine(0, 0 ,L, 0)
contraintes = mon_esquisse.Constraints
tangence_beta = contraintes.AddBiEltCst(constants.catCstTypeTangency, cercle_Jr, droite_beta)
tangence_beta.Mode = constants.catCstModeDrivingDimension
      
#Sortie de l'esquisse
mon_esquisse.CloseEdition()

ma_piece.Update()

这是得到的错误:

Traceback (most recent call last):

  File "C:\Users\Documents\CodeErreur.py", line 54, in <module>
    tangence_beta = contraintes.AddBiEltCst(constants.catCstTypeTangency, cercle_Jr, droite_beta)

  File "C:\Users\Anaconda3\lib\site-packages\win32com\client\__init__.py", line 178, in __getattr__
    raise AttributeError(a)

AttributeError: catCstTypeTangency

我已经尝试过主题中的答案:Catia enumeration values when using Python。但这对我不起作用。你能帮帮我吗?

【问题讨论】:

    标签: python cad catia


    【解决方案1】:

    catCstTypeTangency 不是win32com.client.constants 的成员,因为它独立于 Catia。

    如果您查看 CAA V5 Visual Basic 帮助,您可以找到约束类型和约束模式的枚举:

    enum CatConstraintType {
      catCstTypeReference,
      catCstTypeDistance,
      catCstTypeOn,
      catCstTypeConcentricity,
      catCstTypeTangency,
      catCstTypeLength,
      catCstTypeAngle,
      catCstTypePlanarAngle,
      catCstTypeParallelism,
      catCstTypeAxisParallelism,
      catCstTypeHorizontality,
      catCstTypePerpendicularity,
      catCstTypeAxisPerpendicularity,
      catCstTypeVerticality,
      catCstTypeRadius,
      catCstTypeSymmetry,
      catCstTypeMidPoint,
      catCstTypeEquidistance,
      catCstTypeMajorRadius,
      catCstTypeMinorRadius,
      catCstTypeSurfContact,
      catCstTypeLinContact,
      catCstTypePoncContact,
      catCstTypeChamfer,
      catCstTypeChamferPerpend,
      catCstTypeAnnulContact,
      catCstTypeCylinderRadius,
      catCstTypeStContinuity,
      catCstTypeStDistance,
      catCstTypeSdContinuity,
      catCstTypeSdShape
    }
    
    enum CatConstraintMode {
      catCstModeDrivingDimension,
      catCstModeDrivenDimension
    }
    

    这意味着catCstTypeTangency == 4catCstModeDrivingDimension == 0

    只需使用这个:

    tangence_beta = contraintes.AddBiEltCst(4, cercle_Jr, droite_beta)
    tangence_beta.Mode = 0  # doesn't make sense for a tangency constrait
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多