Aller au contenu

NODAL, rien que NODAL . . .


Messages recommandés

Posté(e)

Voilà,

 

dans un dessin j'ai des points 3D

 

dans un programme, si je dis :

 

(setvar "OSMODE" 8)

puis :

 

(setq p1 (getpoint "\n Premier point "))

puis :

(setq p2 (getpoint "\n Premier point "))

 

je peux connaitre la distance, le X et le Y des points et les enregistrerdans un fichier,

 

par contre si je clique à coter du point (n'importe ou dans le dessin)

le programme prend les information du point (non 3D) cliqué.

(surement à cause de getpoint)

 

Comment forcer l'accrobj NODAL, et si je clique autre chose que NODAL,

le programme attende un point nodal et pas autre chose

 

A+

 

 

Posté(e)

Salut

 

Tu peux agrandir la sensibilité de l'accrochage aux objets avec la variable aperture, mais pas pour autant contrôler ce que l'utilisateur va réellement cliquer (un autre point nodal par exemple ou encore de le désactiver avec la touche f3 pendant la commande)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Salut,

 

À la place de

 

(setq p1 (getpoint))

 

tu peux faire :

 

(setq p1 (ssget "_:S:E" '((0 . "POINT"))))

 

et ensuite

 

(setq p1 (cdr (assoc 10 (entget (ssname p1 0)))))

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

Posté(e)

Salut,

je pensais à la même chose que (gile), mais je me suis dit que tes nodal était peut-être des blocs....

j'ai trouvé ça, mais ça ne fonctionne qu'au premier lancement....

 

(command "_point" "_nod" pause)
(vla-delete (vlax-ename->vla-object (entlast)))
(setq pt (getvar "lastpoint"))

 

... j'ai essayé avec un (getvar "cmdactive"), je n'arrive pas à faire répéter le premier "_nod"....

je cherche....

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Pour (gile)

 

voila le résultat :

 

[surligneur] ; erreur: type d'argument incorrect: lselsetp nil[/surligneur]

aprè avoir entré en commande dans le dessin

(setq p1 (ssget "_:S:E" '((0 . "POINT")))) puis

(setq p1 (cdr (assoc 10 (entget (ssname p1 0)))))

 

 

pour bred

 

exact, c'est un bloc et attribut rentré en X,Y et Z

 

A+

 

Posté(e)

Et on pourrait "pousser le bouchon un peu plus loin", en utilisant des filtres logiques sur les coordonnées pour écarter les points 2D éventuels....

 

((lambda ( / js)
(while (null (setq js (ssget "_:S:E" '((0 . "POINT") (-4 . "*,*,>") (10 0.0 0.0 0.0))))))
(cdr (assoc 10 (entget (ssname js 0))))
))

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)
pour bred

exact, c'est un bloc et attribut rentré en X,Y et Z

 

Est-ce que la nodal du bloc correspond à sont point d'insertion ?

(et si oui quel est le nom du bloc ?)

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Oui, l'insertion du bloc est bien le nodal, le bloc se nomme point-a, et il est inséré en X, Y et Z,

 

dans mon programme, je fais la distance PT1, PT2 et je lit uniquement le Z pour l'altitude, ce qui me donne un fichier du genre:

 

0.00

339.7297

12.434

340.1218

7.512

340.3587

12.488

340.7266

7.486

340.9466

12.514

341.3020

 

etc

 

14.356

342.5335

5.658

342.4771

fin

 

c'est pour dessiner un profil en long.

 

A+

Posté(e)
Oui, l'insertion du bloc est bien le nodal, le bloc se nomme point-a, et il est inséré en X, Y et Z

Et bien la réponse à alors été donné il n'y a pas longtemps, et magistralement, par Bonuscad, ici !

... reste plus qu'à tester le nom du bloc et son point d'insert !....

tu sais faire ?

 

;)

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Ce que je donnais doit fonctionner en changeant le filtre de sélection

 

(setq p1 (ssget "_:S:E" '((0 . "INSERT") (2 . "point-a"))))
(setq p1 (cdr (assoc 10 (entget (ssname p1 0))))) 

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

Posté(e)

ok (gile) çà marche,

mais il est têtu le vosgien,

n'ya t'il pas moyen avec cette fonction, que si on clique à coté du bloc, la fonction attendre vraiment que l'on clique le bloc ?

 

A+

Posté(e)

mais il est têtu le vosgien,

 

Hé bien la même adaptation que (gile) pour ma première réponse!

 

Copies-colles le code directement en ligne de commande, (recolle en ligne de commande pour refaire un test)

 

((lambda ( / js)
(while (null (setq js (ssget "_:S:E" '((0 . "INSERT") (2 . "point-a") (-4 . "*,*,>") (10 0.0 0.0 0.0))))))
(cdr (assoc 10 (entget (ssname js 0))))
))

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Salut richard-c

 

çà fait une paie qu'on se s'est pas écrit.

 

Ben, on a chacun ses occupations qui font que ... ;)

 

Un petit commentaire (en francais) sur _:S & _:E

 

S est pour (Single) sélection simple ou 1 seul objet uniquement si tu préfères.

 

E est pour (Everything) Tout objet compris dans la cible de sélection.

 

La combinaison permet de dire que l'on veut un seul objet correspondant au filtre parmi tout les objets contenus dans la cible de sélection.

 

Ce mode est influencé par la variable PICKBOX (taille de la cible de sélection)

 

Bonne journée.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é