我正试着用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我已经尝试了主题中的答案:使用Python时的Catia枚举值。但它对我不起作用。你能帮帮我吗?
发布于 2021-07-03 06:10:16
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 == 4和catCstModeDrivingDimension == 0
只需使用以下命令:
tangence_beta = contraintes.AddBiEltCst(4, cercle_Jr, droite_beta)
tangence_beta.Mode = 0 # doesn't make sense for a tangency constraithttps://stackoverflow.com/questions/67970776
复制相似问题