• Ce forum est la traduction générée par la machine de www.cad3d.it/forum1 - la communauté italienne du design. Plusieurs termes ne sont pas traduits correctement.

Coordonnées de restitution des éléments sélectionnés et leur comparaison

  • Auteur du sujet Auteur du sujet piratabobo
  • Date de début Date de début

piratabobo

Guest
bonjour à tous
je voudrais faire un programme mais je ne sais pas par où commencer, sur un design j'ai conçu plusieurs rectangles comme polylinea, maintenant les sélectionner, je voudrais connaître par code les coordonnées des sommets de chaque rectangle.
ce que je voudrais faire et possible via vba ou pas?
et si c'est possible comme je peux le faire, je vous serais reconnaissant de toute suggestion.
je vous remercie d'avance.
bonjour.
 
sous cad3d_poly()

dim coord comme variante
dim sset comme acadselectionset
set sset = thisdrawing.selectionsets.add("ss1")

sset.sectonscreen

strtxt = sset.item(0).nom de l'objet
si strtxt = "acdbpolyline" alors
définir plineobj = sset.item(0)
fin si

coord = plineobj.coordonnées
msgbox "coordonne 1° de vertige" & coord(0) & ", & coord(1) & ", & coord(2)
msgbox "coordonné 2° de vertige" & coord(3) & ", & coord(4) & ", & coord(5)
' etc....
fin sous

ciao
 
avant tout grâce à la réponse
j'ai essayé le code et j'ai obtenu quelques erreurs comme des variables non définies, tapez strtxt et plineobj, aussi sur sset.sectonscreen j'ai compris l'erreur fenêtre principal autocad invisible.
pour les deux variables, je ne sais pas quel type de variable déclarer, tout en ce qui concerne l'erreur de sset.selectonscreen je ne comprends pas.
de plus, si je comprends bien ce code, il devrait faire une sélection automatique de tout ce qui est à la vidéo, tandis que je sélectionne mes rectangles voudraient le faire manuellement.
 
1) option explicitee vous oblige à déclarer des variables.

2) dim strtxt comme chaîne
3) dim plineobj comme objet

4) selectonscreen sélectionne "sur écran" à la vidéo, puis ce que vous indiquez.

j'ai oublié quelque chose, mais ce n'est pas à propos des problèmes que vous avez rencontrés :
cedrawing.selectionsets.item("s1").
ajouter avant "fin sous"

sans cela ne fonctionne que la première fois.

rappelle la macro avec le design actif, prix alt+f8.

bonjour.
 
j'ai corrigé le code selon vos instructions mais j'obtiens toujours la même erreur: fenêtre principal autocad invisible je ne comprends pas pourquoi cette erreur me vient :
 
merci pour le conseil de plannerroad
les exemples suggérés par vous sont excellents, ce vertexte en théorie et juste ce dont j'ai besoin, le seul problème et que je dois faire la même chose en vba et au lieu de choisir une polylinea à la fois je dois avoir la possibilité de pouvoir sélectionner un nombre non défini de polylinese.
si quelqu'un peut m'aider, je serais vraiment reconnaissant.
 
merci pour le conseil de plannerroad
les exemples suggérés par vous sont excellents, ce vertexte en théorie et juste ce dont j'ai besoin, le seul problème et que je dois faire la même chose en vba et au lieu de choisir une polylinea à la fois je dois avoir la possibilité de pouvoir sélectionner un nombre non défini de polylinese.
si quelqu'un peut m'aider, je serais vraiment reconnaissant.
cependant plist vous permet de sélectionner plusieurs polylignes. exportcoords à la place sur plus de polylinee je ne l'ai pas essayé.
 
je vais réessayer.

si vous ne pouvez pas le faire fonctionner... :mixe:

j'attache les fichiers dwg et dvb, les télécharge et les parties du dwg, charge le dvb et jette la macro.

vous pouvez sélectionner plus de polyligne.

p.s.: c'est un exemple qui doit vous servir pour apprendre la vba, c'est à vous de l'adapter à vos besoins.

bonjour.
 

Pièces jointes

bonjour.
je profite de l'occasion pour demander si nécessaire quel manuel en ita pour pouvoir acheter, déjà j'ai acheté "vba pour autocad de jeffrey e. clark"
 
Dernière édition:
p.s.
je voulais abuser de votre bonté, il est possible d'avoir par exemple sur 10 rectangles, 4 de taille égale et des sommets, comparer les rectangles entre eux pour obtenir un nombre total de rectangles égaux, et le nombre de différents rectangles?
 
Dernière édition:
si je dois d'abord stocker tous les rectangles et ensuite les comparer ou les comparer pendant que je vais les lire à partir du dessin
 
si je dois d'abord stocker tous les rectangles et ensuite les comparer ou les comparer pendant que je vais les lire à partir du dessin
je n'ai pas suivi la discussion depuis le début, mais pour ce problème je pense que vous devez d'abord mémoriser dans un tableau toutes les valeurs des sommets et ensuite confontarli par la suite. . . .

il n'est pas dit que dans la sélection ils sont pris dans l'ordre "égal-différent" et donc il est impossible de faire ce que vous voulez sans mémoriser les valeurs quelque part.
 
mais mémoriser tout dans un tableau le contrôle que je dois faire doit être basé sur quoi, les coordonnées, la zone, le nombre de sommets ou tout ? et alors considérer que dans l'utilisation que je vais faire de cette procédure je peux aussi avoir une centaine de rectangles, donc je voudrais trouver une solution optimale pour ne pas exécuter des erreurs et pour ne pas avoir de problèmes plus tard.
 
mais mémoriser tout dans un tableau le contrôle que je dois faire doit être basé sur quoi, les coordonnées, la zone, le nombre de sommets ou tout ? et alors considérer que dans l'utilisation que je vais faire de cette procédure je peux aussi avoir une centaine de rectangles, donc je voudrais trouver une solution optimale pour ne pas exécuter des erreurs et pour ne pas avoir de problèmes plus tard.
bhè sur la zone je l'exclus car c'est le rapport b*h et il n'est pas dit que deux rectangles qui ont la même zone ont la même taille, selon moi des points de la polylinea vous devez identifier les vecteurs et puis trouver les longueurs de b et h. à ce point le contrôle vous le faites sur les deux côtés et non sur les points...

attention à la séquence des points, il n'est pas dit que tous les retts ont été créés en utilisant le même critère...

la seule chose que vous savez c'est qu'il y a 4 sommets que je crois à 90° parce que vous parlez de rectangles... vous devez partir de là...

donc... p0,p1,p2,p3

p1-p0 vous donne un support latéral
p2-p1 vous donne l'autre...

entreposez-les et puis distorsion où les deux porteurs sont égaux
 
Dernière édition:
j'ai pensé, et si je les mets dans une grille selon vous et le même ou pas, et le contrôle que je le fais sur la grille et non sur un tableau même si à la fin le concept et le même, mais en termes de temps de fonctionnement ce qui serait mieux?
 
j'ai pensé, et si je les mets dans une grille selon vous et le même ou pas, et le contrôle que je le fais sur la grille et non sur un tableau même si à la fin le concept et le même, mais en termes de temps de fonctionnement ce qui serait mieux?
je me réfère aux variables contenues dans le dvb posté.à condition que les chiffres à comparer ne soient que rectangulaires tirés sur le même plan x-y.
base et hauteur calculées des rectangles:
1 et 3 sommets de rectangle ou de polylinea
base=abs(coord(0)-coord(4))
hauteur=abs(coord(1)-coord(5))
l'utilisation de Abs résout le problème de l'orientation.
les mettre dans une matrice:
dim matrice (1 à 200, 1 à 2) double
matrice(1,1)=base
matrice(1,2)=hauteur

pour trouver les mêmes :
si matrice(1,1)=matrice(2,1) et matrix(1,2)=matrice(2,2) alors
'égale
fin si

c'est le point, pour vous, le fardeau de l'élargissement.

bonjour.
 

sur ce que vous dites je suis parfaitement d'accord, mais mon dilemme se pose quand par exemple je compare le premier avec le second, le premier avec le troisième, le premier avec le quatrième etc. puis la deuxième avec la troisième, la seconde avec la quatrième etc. si par exemple le troisième rectangle et égal au premier et à la première comparaison je dis qu'il y a 2 rectangles égaux au premier, comment puis-je exclure de la vérification du troisième rectangle et comment l'ai-je fait pour le premier?
j'espère avoir été un peu clair sur ce que je veux dire.
merci encore.
 

Statistiques du forum

Sujets
58 521
Messages
499 056
Membres
104 110
Dernier membre
ChristianR

Membres en ligne

Aucun membre en ligne actuellement.
Retour
Haut