Hyppolight Posté(e) le 21 octobre 2016 Posté(e) le 21 octobre 2016 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 : Exemple script: SCU_GRD.txt
Hyppolight Posté(e) le 21 octobre 2016 Auteur Posté(e) le 21 octobre 2016 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
(gile) Posté(e) le 21 octobre 2016 Posté(e) le 21 octobre 2016 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
didier Posté(e) le 21 octobre 2016 Posté(e) le 21 octobre 2016 Coucou J'ai failli venir répondre mais je savais que (gile) passerait par là et c'est autrement mieux expliqué Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant