• 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.

Erreur macro pour les points d'importation de txt

omar91

Guest
Bonjour tout le monde, mon nom est omar et je suis nouveau au forum. Je suis étudiant en génie mécanique (diplômé) et je viens de commencer à utiliser des ouvrages solides.
n'ayant pas trouvé de commande pour importer un ensemble de points, j'ai cherché sur Internet une macro qui m'a permis de le faire. J'en ai trouvé un qui semblait fonctionner et que je ramène :

Sous-main()

définir swapp = application. Soldworks
set part = swapp.activedoc
swapp.activedoc.activeview.framestate = 1
dim skpoint comme objet

ouvrir "c:\users\omar\desktop\matérial thesis\voluta\linee\prova.txt" pour entrée comme #1
partie.sketchmanager.insert3dsketch true
ne le font pas (1)
entrée #1, x, y, z
set skpoint = part.sketchmanager.createpoint(x, y, z)
boucle


fin

Je dis qu'il a semblé parce que les valeurs des points sont déformées, par exemple 45.888 devient 45888, 451,88844 devient 451888.444, c'est-à-dire que tous les nombres sont augmentés d'un facteur 1000; de plus pour les valeurs de la terna "petit" (disons en dessous du dixième, bien qu'en réalité il semble tout à fait aléatoire), les nombres sont lus directement comme 0 (pour "resolvere" je pensais donner en valeurs réduites d'entrée d'un facteur 1000 x
pour mes capacités tout cela apparaît comme "mystérieux", peut-on me donner des explications? Je vous remercie.
 
Bonjour.
la macro fonctionne bien et comme vous l'avez dit, vous devez diviser les coordonnées par 1000, ceci parce que l'"appel" aux abeilles "createpoint", nécessite les valeurs en mètres, ceci pour tout ce qui concerne la programmation en travaux solides.
Je vous suggère de toujours déclarer les bonnes variables pour le type de données à contenir, dans votre double cas (la virgule mobile double, est un type de nombre donné avec au moins deux décimales, par exemple les tours 35 en 35.00).
Les abeilles créées vous obligent à passer trois doubles coordonnées, vba pas toujours, mais pour vous cette « traduction ».

Je recommande toujours au séparateur décimal, dans votre cas le "." qui doit coïncider avec celui défini dans les paramètres supplémentaires dans le pays et la langue dans le panneau de contrôle des fenêtres, sinon l'ordinateur interprète les chiffres différemment.

Je me suis permis de changer la macro en déclarant différemment la variable "swapp" et en déclarant x,y,z comme double.
En outre J'ai inséré pour ne pas voir l'insertion graphique des entités dans la phase de création à l'intérieur du croquis, cette vitesse exponentiellement la macro dans la phase d'exécution, surtout lorsque les points deviennent nombreux.
J'ai fermé le croquis.

p.s.: comme vous le savez peut-être, si devant tout ce que vous écrivez vous mettez un ' (apostrophe), la ligne est dit pour être commentée et apparaît en vert et n'est pas lu dans la phase d'exécution.

Bonne journée
Janvier

voici le code mis à jour

dim x double
dim y double
dim z double
dim échange comme sldworks. Soldworks
dim partie comme sldworks.modeldoc2
Sous-main()

définir swapp = application. Soldworks
set part = swapp.activedoc
swapp.activedoc.activeview.framestate = 1

Dim Skpoint en tant que sldworks. croquis

ouvrir "c:\prova.txt" pour entrée comme #1
partie.sketchmanager.insert3dsketch true
'pour geler les graphiques pendant l'insertion, tout est beaucoup plus rapide
partie.sketchmanager.addtodb = true

ne le font pas (1)
entrée #1, x, y, z
set skpoint = part.sketchmanager.createpoint(x / 1000, y / 1000, z / 1000)
boucle

"Reprise insertion graphique
partie.sketchmanager.addtodb = faux
' Je ferme le croquis
partie.sketchmanager.insert3dsketch false
fin
 
Merci, Jenuary ! probablement quand j'ai essayé de diviser par 1000 dans la macro j'avais mal quelque chose et puis je suis revenu 0.
Je vous remercie également pour les améliorations que vous avez apportées et que je vais essayer. dans mon cas spécifique (disons le plus urgent, pour la thèse), le nombre de points est limité (quelque txt d'environ 50 points), mais par curiosité j'avais essayé aussi avec un txt contenant un nombre beaucoup plus élevé de points et en effet après un sw a été écrasé.
 

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