Aller au contenu

ameliorer insertion bloc


pascal19

Messages recommandés

J'ai fait un bouton pour inserer un bloc dynamique:

 

^C^C-inserer;0-lf-reseaux-cfa-droit2;\;1;;

 

dans tout mes blocs dynamiques du type "0-lf-reseaux-cfa... " j'ai un parametre de consultation

que j'ai appelé cfa-largeur, or quand j'insère un bloc cfa, c'est sur un autre bloc cfa.

 

est-il possible de faire correspondre le parametre cfa-largeur du bloc à inserer avec celui

du bloc sur lequel je l'insère ?

 

Faut-il passer par du LISP ou VLISP ?

 

Suis-je clair?

Lien vers le commentaire
Partager sur d’autres sites

heum...le la refait...

 

Bonjour

 

J'ai fait un bouton pour inserer un bloc dynamique:

 

^C^C-inserer;0-lf-reseaux-cfa-droit2;\;1;;

 

dans tout mes blocs dynamiques du type "0-lf-reseaux-cfa... " j'ai un parametre de consultation

que j'ai appelé cfa-largeur, or quand j'insère un bloc cfa, c'est sur un autre bloc cfa.

 

est-il possible de faire correspondre le parametre cfa-largeur du bloc à inserer avec celui

du bloc sur lequel je l'insère ?

 

Faut-il passer par du LISP ou VLISP ?

 

Suis-je clair dans mon énoncé car j'ai moi même du mal à le comprendre?

 

D'avance merci

 

Lien vers le commentaire
Partager sur d’autres sites

http:// http://images.imagehotel.net/sjjbwjh95l.jpg

 

Voila j'ai la partie droite d'un chemin de câble, sa largeur est un parametre dynamique (parametre de consultation que j'ai appelé

cfa-largeur)

Je viens inserer un coude, celui ci s'aligne grace à un parametre d'alignement,mais j'aimerai aussi que sa l'argeur s'ajuste à celle de la partie droite, sachant que ce coude est aussi un bloc dynamique

dont la largeur est un paramètre identique à celui de la parti droite

(parametre de consultation que j'ai appelé cfa-largeur)

 

en esperant avoir été plus clair...

Lien vers le commentaire
Partager sur d’autres sites

déja, j'avais pas dit bonjour

 

en outre "suis-je clair ?" est ambigue dans sa forme, en effet un superieur

emploie cette formule à un subordonné pour s'assurer que les consignes ont

bien été comprises.

Evidemment, je n'ai pas employé cette formule dans ce sens, je voulais juste ne pas être trop long tout en voulant m'assurer que mon énoncé était compréhensible.

 

Par conséquent, toutes mes excuses à tous ceux que j'ai pu froissé (principalement

patrick_35) je ne pensais pas être mal polis

 

a+

Lien vers le commentaire
Partager sur d’autres sites

Bonjour

 

lesourd2

pascal19 a très bien compris le sens de ma remarque (et je ne suis pas froissé pour autant, car il m'arrive aussi de temps en temps d'attraper un de ces virus. C'est juste que cela devient malheureusement une généralité et il faut parfois faire un rappel à l'ordre)

De plus, le lien est à prendre au second degré et la réponse de x_all (qui m'a bien fait rire) va dans ce sens.

 

pascal19

Je pense qu'il va falloir faire un lisp pour répondre à ton besoin.

Je peux te faire quelque chose, mais pour cela, tu pourrais m'envoyer tes blocs ?

Ou alors, le faire toi-même. Il faut juste définir une variable de largeur que pourront ensuite exploiter tes autres blocs via une routine d'insertion.

 

@+

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

 

Voici un premier jet, mais il me convient à moitié car il y a une chose qui m'échappe.

Je me suis débrouillé pour que cela fonctionne correctement

 

(defun reacteur_ajouter_cdc(rea data / ent pro)
 (and	(setq ent (vlax-ename->vla-object (cadr data)))
(eq (vla-get-objectname ent) "AcDbBlockReference")
(eq (vla-get-isdynamicblock ent) :vlax-true)
(member	(strcase (vla-get-effectivename ent) T)
	'(	"0-lf-reseaux-cfa-casse"
		"0-lf-reseaux-cfa-coude"
		"0-lf-reseaux-cfa-droit1"
		"0-lf-reseaux-cfa-droit2"
		"0-lf-reseaux-cfa-reduc"
		"0-lf-reseaux-cfa-te-croix"
	)
)
Patrick_Taille_Cdc
   (foreach pro (vlax-invoke ent 'getdynamicblockproperties)
     (if (eq (vla-get-propertyname pro) "Consultation")
(if (member (itoa Patrick_Taille_Cdc) (vlax-get pro 'allowedvalues))
  (setq liste_object_reacteur_cdc (cons pro liste_object_reacteur_cdc))
;	  (vla-put-value pro (itoa Patrick_Taille_Cdc))
  (princ "\nLa taille du Chemin de câbles ne correspond pas aux paramètres de Consultation.")
)
     )
   )
 )
 (princ)
)

(defun debut_command_cdc(rea cde / pro)
 (setq liste_object_reacteur_cdc nil)
)

(defun arret_command_cdc(rea cde)
 (and liste_object_reacteur_cdc
   (foreach pro liste_object_reacteur_cdc
     (vla-put-value pro (itoa Patrick_Taille_Cdc))
   )
 )
 (setq liste_object_reacteur_cdc nil)
 (princ)
)

(defun c:cdc(/)
 (initget 3)
 (and	(setq Patrick_Taille_Cdc (getint "\nIndiquez la taille du chemin de câbles : "))
(not Patrick_Ajouter_Cdc)
   (setq Patrick_Ajouter_Cdc (vlr-acdb-reactor nil (list (cons :vlr-objectappended (function reacteur_ajouter_cdc)))))
   (vlr-editor-reactor nil (list (cons :vlr-commandWillStart (function debut_command_cdc))
			  (cons :vlr-commandcancelled (function arret_command_cdc))
			  (cons :vlr-commandfailed    (function arret_command_cdc))
			  (cons :vlr-commandEnded     (function arret_command_cdc))
		    )
   )
 )
 (princ)
)

 

@+

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

Super... merci d'avoir pensé à moi et de bien vouloir m'aider.

 

A priori ça marche bien...

 

mais il me faut in peu de temps pour étudier ce que tu as fait (c'est un peu compliqué pour moi qui n'y connais absoluement rien en VLISP)

 

A propos de ce qui t'échappe, puis-je quelque chose pour toi?

 

A bientot

 

PS j'ai remplacé

 

(if (eq (vla-get-propertyname pro) "Consultation")

 

par

 

(if (eq (vla-get-propertyname pro) "cfa-largeur")

 

pour que ça fonctionne dans mon fichier module-cfa.dwg (dans lequel j'ai renomé "consultation"

en "cfa-largeur" pour l'ensemble des blocs)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour

A propos de ce qui t'échappe, puis-je quelque chose pour toi?

Si tu veux, c'est dans la gestion des réacteurs.

Quand tu ajoutes un objet, tu ne peux le modifier directement et j'ai donc rusé avec d'autres réacteurs.

Si tu trouves mieux, je suis preneur :)

.

.

.

.

.

.

.

.

.

.

.

 

Pas la peine, car j'ai contouné le problème et optimisé le lisp sans utiliser une liste comme auparavant ;)

 

(defun reacteur_ajouter_cdc(rea data / ent pro)
 (and	(setq ent (vlax-ename->vla-object (cadr data)))
(eq (vla-get-objectname ent) "AcDbBlockReference")
(eq (vla-get-isdynamicblock ent) :vlax-true)
(member	(strcase (vla-get-effectivename ent) T)
	'(	"0-lf-reseaux-cfa-casse"
		"0-lf-reseaux-cfa-coude"
		"0-lf-reseaux-cfa-droit1"
		"0-lf-reseaux-cfa-droit2"
		"0-lf-reseaux-cfa-reduc"
		"0-lf-reseaux-cfa-te-croix"
	)
)
Patrick_Taille_Cdc
   (foreach pro (vlax-invoke ent 'getdynamicblockproperties)
     (if (eq (vla-get-propertyname pro) "Consultation")
(if (member (itoa Patrick_Taille_Cdc) (vlax-get pro 'allowedvalues))
  (progn
    (and liste_object_reacteur_cdc
      (vla-put-value liste_object_reacteur_cdc (itoa Patrick_Taille_Cdc))
    )
    (setq liste_object_reacteur_cdc nil)
    (or (eq (vla-get-value pro) (itoa Patrick_Taille_Cdc))
      (setq liste_object_reacteur_cdc pro)
    )
  )
  (princ "\nLa taille du Chemin de câbles ne correspond pas aux paramètres de Consultation.")
)
     )
   )
 )
 (princ)
)

(defun arret_command_cdc(rea cde)
 (and liste_object_reacteur_cdc
   (vla-put-value liste_object_reacteur_cdc (itoa Patrick_Taille_Cdc))
 )
 (setq liste_object_reacteur_cdc nil)
 (princ)
)

(defun c:cdc(/)
 (initget 3)
 (and	(setq Patrick_Taille_Cdc (getint "\nIndiquez la taille du chemin de câbles : "))
(not Patrick_Ajouter_Cdc)
   (setq Patrick_Ajouter_Cdc (vlr-acdb-reactor   nil (list (cons :vlr-objectappended   (function reacteur_ajouter_cdc)))))
		      (vlr-editor-reactor nil (list (cons :vlr-commandcancelled (function arret_command_cdc))
						    (cons :vlr-commandfailed    (function arret_command_cdc))
						    (cons :vlr-commandEnded     (function arret_command_cdc))
		      )
   )
 )
 (princ)
)

 

J'ai conservé le paramètre Consultation que tu peux remplacer comme tu l'as déjà fait.

 

@+

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

 

Pour patrick35

Si tu trouves mieux, je suis preneur

 

non je crois pas! en fait j'essaie de comprendre mais mon niveau, c'est plutôt

bidouille en LISP et zéro en VLISP, c'est donc un peu dur...

(concretement je ne sais même pas ce qu’est un réacteur !)

 

D'après ce que j'ai testé :

je lance CDC

je donne une largeur

les blocs que j’insère ensuite prennent le diamètre donné précédemment.

 

Personnellement j’avais imaginé :

Je lance le programme

Je donne un point d’insertion pour mon bloc : (setq point-base (getpoint))

Je récupère l’entité se trouvant là où se trouve mon bloc : (setq entité-bloc (ssget point-base))

Si entité-bloc existe, je récupère « consultation » (mais là je sais pas faire)

Si entité-bloc=nil alors je donne une largeur

Ensuite le bloc s’insère avec la bonne largeur (je ne sais toujours pas faire)

 

Penses-tu que c’est possible ?

 

Pour tous les autres :

 

Je peux vous envoyer mes blocs si vous êtes intéressés pour participer à ce post…

 

A+

 

 

Lien vers le commentaire
Partager sur d’autres sites

Re

 

Oui, c'est possible, mais cela revient au même que le lisp qui a été fait. La seule différence, c'est de donner en premier la largeur :casstet:

 

De plus, si tu copies un ensemble de cdc, ils se mettront tous à la bonne taille.

 

(concretement je ne sais même pas ce qu’est un réacteur !)

Un réacteur permet d'incruster un lisp dans une commande d'autocad.

Pour ton besoin, j'interviens lors de l'ajout d'un objet dans le dessin (commande insérer, copier, réseau, etc...)

Je regarde si l'objet ajouté est un bloc, s'il est dynamique, s'il fait parti de la liste des blocs, si la taille indiquée faite partie de la liste Consultation, si la taille ne correspond pas et alors je lui force sa valeur.

 

@+

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

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é