Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

Je cherche à créer via VB.NET un script pour générer des SCU pour chacun de mes contours de planches (appelé GRD)

 

Mon code fonctionne parfaitement pour la quasi-totalité des angles hormis pour les angles à 90° et 270° (planches verticales) ce qui me pose problème car se sont des angles souvent utilisés.

 

J'ai mis en pièces jointes mon code actuel ainsi qu'un exemple en jpg et le script généré pour l'exemple.

 

Auriez-vous une idée pour traiter ces angles "particuliers"?

 

Par avance, merci.

 

Code :

 

CODE SCRIPT SCU.txt

 

Visu :

 

post-60877-0-93673300-1477034544_thumb.jpg

 

Exemple script:

 

SCU_GRD.txt

Posté(e)

Rebonjour,

 

Pour ceux qui rencontrerait le même problème, je viens de découvrir une alternative:

 

Il était possible de générer un SCU depuis un objet.

 

commande : "SCU OB " ... puis demande sélection de l'objet

 

La sélection de l'objet pouvant se faire via la commande "(Handent xxxx)" ou xxxx est le handle de l'entité,

je n'ai donc plus à me prendre la tête avec des calculs d'angles.

 

 

Ci-joint mon nouveau code :

 

SCRIPT_SCU_OBJ.txt

Posté(e)

Salut,

 

Je ne suis pas très à l'aise pour lire le VB mais il y a, dans la façon de procéder, certains trucs que je trouve curieux.

 

Tes tableaux semblent indexés sur une base 1 au lieu de 0. Cette possibilité héritée de l'ancien VB a été conservée en VB.NET mais n'est pas, à mon avis une bonne pratique ; tous les autres langages .NET (C#, C++/CLI, F#, ...) utilisent un index de base 0.

 

Pourquoi arrondir les nombres ?

 

Si tu connais les sommets des "contours de planche" pourquoi tout recalculer ?

 

Pourquoi décomposer les points en tableaux de coordonnées dans la classe clGRD plutôt qu'un tableau de Point3d ?

 

Avec des instances de Point3d, tu pourrais utiliser les méthodes fournies par la structure Vector3d :

 

'dans la classe clGRD
'Public Points(4) As Point3d      'Position des 4 coins

'vecteur en X
X_Vect = Points(1).GetVectorTo(Point(2)) 'ou X_Vect = Point(2) - Points(1)
'vecteur en Y
Y_Vect = Points(1).GetVectorTo(Point(4)) 'ou X_Vect = Point(4) - Points(1)
'vecteur en Z
Z_Vect = X_Vect.CrossProduct(Y_Vect)

 

Pour le "vecteur en Z" ça pourrait être la constante Vector3d.ZAxis si tu es toujours en 2D ou même une simple validation dans le script.

 

PS: je déplace ce sujet dans le forum ObjectARX/DBX, C++, .NET, RealDWG.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité