Aller au contenu

RINS


Patrick_35

Messages recommandés

Bonjour

 

Voici une nouvelle version de RINS qui doit fonctionner normalement avec des blocs miroités.

Merci de tester si tout fonctionne correctement.

J'ai bidouillé et cela me chagrine car rien à faire avec les matrices. Malgré les excellentes explications de (gile), ça coince toujours.

 

(defun c:rins(/ bl dec deh doc ech ent js n nom nom_bl lst1 lst2 pt rep rota uni)

 (defun rota(pt bas rot / lay lck po)
   (setq lay (vla-item (vla-get-layers doc) (getvar "clayer")))
   (and (eq (vla-get-lock lay) :vlax-true)
     (setq lck T)
     (vla-put-lock lay :vlax-false)
   )
   (setq po (vla-addpoint (if (eq (getvar "cvport") 1)
		     (vla-get-paperspace doc)
		     (vla-get-modelspace doc)
		   )
		   (vlax-3d-point pt)
     )
   )
   (vla-rotate po (vlax-3d-point bas) rot)
   (setq pt (vlax-get po 'coordinates))
   (vla-delete po)
   (and lck (vla-put-lock lay :vlax-true))
   pt
 )

 (defun nom_bl(bl)
   (if (vlax-property-available-p bl 'effectivename)
     (vla-get-effectivename bl)
     (vla-get-name bl)
   )
 )

 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (if (ssget (list (cons 0 "INSERT")))
   (progn
     (vlax-for bl (setq js (vla-get-activeselectionset doc))
(or (member (setq nom (nom_bl bl)) lst2)
  (setq lst1 (cons bl lst1)
	lst2 (cons nom lst2)
  )
)
     )
     (vla-delete js)
     (initget "Oui Non _Yes _No")
     (setq rep (getkword "\nDésirez-vous conserver l'emplacement actuel des blocs  : "))
     (or rep
(setq rep "Oui")
     )
     (foreach ent (reverse lst1)
(vla-highlight ent :vlax-true)
(while (not (setq pt (getpoint "\nVeuillez sélectionner son nouveau point de base : "))))
(vla-highlight ent :vlax-false)
(setq bl  (vla-item (vla-get-blocks doc) (setq nom (nom_bl ent)))
      dec (mapcar '- (rota (trans pt 1 0) (vlax-get ent 'insertionpoint) (- (vlax-get ent 'rotation))) (vlax-get ent 'insertionpoint))
)
(if (< (vlax-get ent 'xscalefactor) 0)
  (setq dec (list (- (car dec)) (cadr dec) (caddr dec)))
)
(setq deh (mapcar '/ dec (list (abs (vlax-get ent 'xscalefactor)) (abs (vlax-get ent 'yscalefactor)) (abs (vlax-get ent 'zscalefactor)))))
(vlax-put bl 'origin (mapcar '+ (vlax-get bl 'origin) deh))
(if (ssget "x" (list (cons 0 "INSERT") (cons 2 (strcat nom ",`**"))))
  (progn
    (vlax-for ent (setq js (vla-get-activeselectionset doc))
      (and (eq rep "Oui") (eq (strcase (nom_bl ent)) (strcase nom))
	(progn
	  (setq dec (mapcar '* (rota deh '(0.0 0.0 0.0) (vlax-get ent 'rotation)) (list (abs (vlax-get ent 'xscalefactor)) (abs (vlax-get ent 'yscalefactor)) (abs (vlax-get ent 'zscalefactor)))))
	  (vlax-put ent 'insertionpoint (mapcar '+ (vlax-get ent 'insertionpoint) dec))
	  (if (< (vlax-get ent 'xscalefactor) 0)
	    (vlax-put ent 'insertionpoint (polar (vlax-get ent 'insertionpoint) (vlax-get ent 'rotation) (* (abs (vlax-get ent 'xscalefactor)) 2 (distance '(0.0 0.0 0.0) deh))))
	  )
	)
      )
    )
    (vla-delete js)
    (princ (strcat "\nModification du point de base pour le bloc \"" nom "\" effectué."))
  )
)
     )
   )
   (princ "\nPas de bloc de sélectionné.")
 )
 (vla-endundomark doc)
 (princ)
)

 

@+

 

[Edité le 11/12/2009 par Patrick_35]

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

Lien vers le commentaire
Partager sur d’autres sites

Salut lili

 

Ce n'est pas un problème avec les attributs. Une synchro suffit.

C'est quand un bloc a subit un miroir (facteur echelle x négatif par exemple) que le bloc ne se repositionne pas correctement à sa place.

Et je n'ai pas encore réussi à résoudre correctement ce bug.

 

@+

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

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

Oui Patrick_35,

 

 

Comme ça ? =>

 

 

Après un p'tit coup de _battman, je me suis rendu compte que je racontais n'importe quoi,.... ;) :cool:

 

(facteur echelle x négatif par exemple)

 

C'est à dire ?

 

Là, par contre, j'ai du mal à voir,...

 

 

 

Civil 3D 2025 - COVADIS_18.3a

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

  • 4 ans après...

Bonjour,

 

Je déterre le post car je n'arrive pas à mettre la main sur le Lisp "RINS" de patrick en dernière version, même sur son blog. Quelqu'un pourrait il le mettre en partage quelque part svp? Ca ensoleillera ma journée!

 

Merci :rolleyes:

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Je déterre le post car je n'arrive pas à mettre la main sur le Lisp "RINS" de patrick en dernière version, même sur son blog. Quelqu'un pourrait il le mettre en partage quelque part svp? Ca ensoleillera ma journée!

 

Merci :rolleyes:

 

Salut,

moi j'ai la version 3.20 mais je ne sais pas si c'est la derniere tu peut la récupérer ici : http://dl.free.fr/i6Km5op6M

j’espère que ta journée sera ensoleillée

 

Moi aussi j'aimerais savoir pourquoi le blog de patrick_35 n'est plus accessible, c'est vraiment dommage et embêtant :(

" Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "

Lien vers le commentaire
Partager sur d’autres sites

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é