Aller au contenu

kalos

Membres
  • Compteur de contenus

    38
  • Inscription

  • Dernière visite

Tout ce qui a été posté par kalos

  1. ma question est simple: compter les blocs (par le nom ou pas) selon un contour polyligne que je pourrai selectionner (et non tracé au fur et à mesure). est ce qu'il y a une commande autocad existante? un script, un lisp? vu que je dois le faire assez souvent, ca pourrait prendre 2sec au lieu de 5min.
  2. Bonjour, j'ai une erreure: attout.lsp correctement chargé(s) Commande: ; erreur: no function definition: ACET-AUTOLOAD2 Bien à vous,
  3. kalos

    point d\'insertion

    bon c'est pas grave mais la bidouille a bien fonctionné et j'avai juste besoin de mettre le poitn d'insertion XY en liste c'est à dire pntXY (defun c:attrot () (setq sset (ssget "X" '((0 . "INSERT") (8 . "moncalqueabloc")))) (if sset (progn (setq i 0 l (sslength sset) ) (while (< i l) (setq name (ssname sset i) loop T) (while loop (setq name (entnext name) entDef (entget name) ) (if (and (= (cdr (assoc 0 entDef)) "ATTRIB") (= (cdr (assoc 2 entDef)) "ROTATION")) (setq rot_att (atof (cdr (assoc 1 entDef))) loop nil) ) (if (= (cdr (assoc 0 entDef)) "SEQEND") (setq loop nil)) ) (setq pnt (cdr (assoc 10 entDef))) (setq pntX (atof (vl-princ-to-string (rtos (car pnt) 2 4)))) (setq pntX (+ pntX 0.8704)) ;bidouille decalage X (setq pntY (atof (vl-princ-to-string (rtos (cadr pnt) 2 4)))) (setq pntY (+ pntY 7.444)) ;bidouille decalage Y (setq pntXY (list pntX pntY)) ;création point d'insertion (command "_.ROTATE" name "" pntXY rot_att) (setq i (1+ i)) ) (prompt "\nRotation des blocs terminés.") ) ) (princ) )
  4. à chaque fois que je dois faire une recherche c fastidieux puisque je dois le faire en sens inverse, je voulai trouver une autre maniere s'il y a.
  5. kalos

    point d\'insertion

    ca me donne la meme chose. mais bon j'arrive à bidouiller pour retrouver le bon résultat. J'ai mon pntX et pntY, sous quelle forme je dois intégrer ces coordonnées dans pnt? c'est à dire pntX,pntY dans mon exemple. comment concatener des réels (pntX pntY) avec un caractere (",") ca me serait bien utile pour d'autres choses d'ailleurs quand on me demande une position X,Y (ici pas besoin de Z) (command "_.ROTATE" name "" pnt rot_att) merci d'avance, si ce point ci est enfin résolu, ca me sauverait la vie!
  6. kalos

    point d\'insertion

    bon, je me suis pas pris la tete, j'ai pris la différence du X et Y et je m'en sers comme point d'insertion par la suite pour effectuer mes rotations. (setq pntX (atof (vl-princ-to-string (rtos (car pnt) 2 4)))) (setq pntX (+ pntX 0.8704)) (setq pntY (atof (vl-princ-to-string (rtos (cadr pnt) 2 4)))) (setq pntY (+ pntY 7.444)) (prompt (strcat "point d'insertion_" (rtos i) " : " (rtos pntX) "," (rtos pntY) ",0\n"))
  7. kalos

    point d\'insertion

    Merci pour ta réponse. du coup avec: (prompt (strcat "point d'insertion_" (rtos i) " : " (vl-princ-to-string (rtos (car pnt) 2 4)) "," (vl-princ-to-string (rtos (cadr pnt) 2 4)) ",0\n")) j'obtiens: point d'insertion_0 : 305394.3731,2253291.992,0 on est loin des 305495.2435 2253299.4364 0.0 dans l'éditeur de bloc j'ai bien mon objet à 0,0,0 assoc 10 récupere bien les positions X,Y de géométrie du bloc? dans mon cas pas du tout. je dois redéfinir le point d'insertion de mon bloc! comment dois je faire sans perdre les données de mon bloc et sa position?
  8. j'ai besoin pour un programme de récupérer le point d'insertion du bloc (setq pnt (cdr (assoc 10 entDef))) cela me renvoit pour pnt: (305494.0 2.25329e+006 0.0) alors que la coordonnée du bloc est: (305495.2435 2253299.4364 0.0) cela ne correspond pas! ou à peu de choses prés, je ne comprends pas...
  9. la commande ATTECRAN et ATTMODE me permet en effet d'activer la visibilité de ceux-ci, je connaissai ces commandes mais elles ne permettent pas de faire une recherche et de zoomer sur le bloc en question.
  10. comment chercher un attribut qui est en mode invisible? la fonction _find ne permettant pas de zoomer sur les attributs invisible trouvés, une astuce? à moins de faire un lisp me permettant de rendre visible/invisible ces attributs, je ne vois pas comment chercher ces attributs simplement. Merci à vous et Bon week-end à tous!
  11. kalos

    selection aprés commande

    GRIPS et GRIPOBJLIMIT ne changent rien. J'ai enfin trouvé ce qui n'allait pas, au lieu de (ssget ":E"), j'ai utilisé (ssget "_I"), le cumul marche bien et me redonne la selection correctement. I Implied selection (objects selected while PICKFIRST is in effect). plus besoin de (sssetfirst nil sset)
  12. kalos

    selection aprés commande

    oui ça je l'avais compris, je sais que "sset" est une variable local et que en dehors de la fonction, c'est inutile. que j'utilise: (sssetfirst nil (ssget "_P")) ou (sssetfirst nil sset) dans ma fonction cela revient au même, je n'ai pas les poignées. en tous cas elles ne sont pas visibles, que dois je faire pour que le gripset J'ai constaté que le regen me les ressuscites mais c'est un peu lourd comme manipulation. pourquoi mes grip handles sont off ? mon pickset (sset) est défini.
  13. oui ca fonctionne apparemment! Toutefois les poignées ne sont visibles qu'aprés avoir retirer/ajouter un bloc de la selection.
  14. kalos

    selection aprés commande

    j'ai du mal à comprendre la subtilité du lisp encore...je sais que mon jeu de selection se trouve dans SSET, ce que je ne comprends pas c'est pourquoi ma routine lisp ne me redonne pas la main sur le jeu de selection. Je ne comprends pas ce que tu veux dire par refaire une boucle, pourquoi faire?
  15. Ca me renvoie cela en ligne de commande mais ne fait rien, je voudrai un trucs du genre (command select "p") mais ca ne me donne pas la main. ou peux on m'expliquer autrement.
  16. kalos

    selection aprés commande

    je précise que le probleme ne pose pas avec (ssget "_P") sélection précédente
  17. comment récupérer le jeu de selection sur lequel on a travaillé dans un lisp? exemple: (defun c:attsum (/ sset sum i l name entDef) (setq sset (ssget ":E") ; Everything in Aperture sum 0 ) (if sset (progn (setq i 0 l (sslength sset) ) (while (< i l) (setq name (ssname sset i) loop T ) ;; Boucle sur les attributs (while loop (setq name (entnext name) entDef (entget name) ) (if (and (= (cdr (assoc 0 entDef)) "ATTRIB") (= (cdr (assoc 2 entDef)) "VALEUR BLOC") ) ;; On a trouvé l'attribut d'étiquette VALEUR BLOC (setq sum (+ sum (atof (cdr (assoc 1 entDef)))) loop nil ) ) (if (= (cdr (assoc 0 entDef)) "SEQEND") (setq loop nil) ) ; Fin de séquence, on termine la boucle ) ;; Passe à l'insertion de bloc suivante (setq i (1+ i)) ) (prompt (strcat "Somme : " (rtos sum))) ) ) (princ) ) le lisp marche bien sauf que j'aimerai récupérer la selection de départ et la commande autocad 'select p' ne me redonne pas la main pour passer d'autres commandes.
  18. Ma question est la suivante: J'effectue une petite routine lisp sur des blocs selectionnés auparavant. comment récupérer le jeu de sélection précédent sachant que le 'select P' ne peux me redonner la main en ligne de commande? Je ne sais pas comment revenir à la situation de départ c'est à dire avec mes blocs sélectionnés pour pouvoir en ajouter/supprimer par derriere des blocs et repasser la moulinette. Merci d'avance, KaLoS
  19. kalos

    accrochages et calques

    bon, ceci étant dit, je vais me contenter des accrochages nodal le reste que je ne veux accrocher étant des polylignes c'est la solution la plus simple pour moi. mon interet est en effet de passer par les points d'insertions des objets.
  20. je ne sais pas si la question existe et la réponse est peux être très simple, elle est la suivante: comment ne s'accrocher qu'à certains calques tout en les gardant visibles. est il possible de filtrer les calques aux accrochages? est il possible de filtrer les polylignes? Merci d'avance.
  21. kalos

    Etiquette attribut

    je pense qu'un simple gestattb suffirait pour changer le nom de l'étiquette, on ne perds pas les valeurs!
  22. kalos

    Rotation Blocs et attributs

    je pensai que ca aurait été plus simple...
  23. kalos

    Rotation Blocs et attributs

    ceci pourrait m'aider: (defun c:BlockRot ( / SelSet Counter EntName Obj ) (princ "Command: Rotate selected Blocks 180 degrees " ) (if (setq SelSet (ssget '((0 . "INSERT" ))) ) (progn (setq Counter 0 ) (vl-load-com) (while (setq EntName (ssname SelSet Counter )) (setq Obj (vlax-ename->vla-Object EntName ) ) (vlax-put-property Obj "Rotation" (+ (vlax-get Obj "Rotation" ) pi ) ) (vlax-release-Object Obj ) (setq Counter (1+ Counter ) ) ) ) (princ ". . no Block selected ! " ) ) (princ) )
  24. kalos

    Rotation Blocs et attributs

    ah non je ne veux pas modifier l'attribut mais la propriété rotation avec la valeur qu est dans l'attribut
  25. kalos

    Rotation Blocs et attributs

    quel est l'équivalent de trans pour faire une rotation? ce code 50 est entré à quel niveau? voici ma maquette qui ne marche pas puisque adapter à partir de MPT est ce que strcase (* (/ pi 180) Eti_rotation) fonctionne? Merci. (defun c:Attrot(/ bl js n rotation Nom_bloc Eti_rotation) (setq js (ssget "_p")) (setq Nom_bloc "Nom_bloc" Eti_rotation "ROTATION" pi "3,1415926535897932384626433832795" ) (if js (progn (setq n 0) (while (ssname js n) (setq bl (entget (ssname js n))) (if (and (eq (cdr (assoc 0 bl)) "INSERT") (eq (strcase (cdr (assoc 2 bl))) (strcase Nom_bloc))) (if (cdr (assoc 66 bl)) (progn (setq rotation (trans (cdr (assoc 50 bl)) (cdr (assoc -1 bl)) 1)) (while (not (eq (cdr (assoc 0 bl)) "SEQEND")) (if (eq (cdr (assoc 0 bl)) "ATTRIB") (cond ((eq (strcase (cdr (assoc 2 bl))) (strcase (* (/ pi 180) Eti_rotation)) (setq bl (subst (cons 1 (rtos (car rotation))) (assoc 1 bl) bl)) (entmod bl) (entupd (cdr (assoc -1 bl))) ) ) ) (setq bl (entget (entnext (cdr (assoc -1 bl))))) ) ) ) ) (setq n (1+ n)) ) ) ) (princ) )
×
×
  • 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é