Aller au contenu

Patrick_35

Membres
  • Compteur de contenus

    6 374
  • Inscription

  • Dernière visite

  • Jours gagnés

    30

Tout ce qui a été posté par Patrick_35

  1. Je me joins à vous tous pour souhaiter à tous les Cadxpien(ne)s de très bonnes fêtes. [marquee]http://smileys.smileycentral.com/cat/36/36_15_1.gif[/marquee] @+
  2. La téléportation pour enfin aller sur la lune et rêver de la terre @+
  3. Si je souhaite par exemple trouver la moitié de mon objet, un (vlax-curve-getDistAtParam sel (/ (- fin deb) 2)) suffit @+
  4. Salut Tu as aussi ce sujet @+
  5. Salut Ou encore expresstools directement au clavier @+
  6. Ou encore dans l'aide C'est dans guide de personnalisation, chapitre diesel et un catalogue des fonctions Extraits de l'aide @+
  7. Patrick_35

    boundingbox

    Oui, sauf qu'une entité est traduite en OCS (Object Coordinate System). Ces coordonnées sont habituellement converties en WCS, UCS courant, ou DCS courant, selon l'utilisation prévue de l'objet @+
  8. Patrick_35

    boundingbox

    Salut Je te propose un truc plus simple dans la fonction trans par rapport au 1er lisp (setq minpoint (trans (vlax-safearray->list minpoint) (vlax-vla-object->ename obj) 1)) (setq maxpoint (trans (vlax-safearray->list maxpoint) (vlax-vla-object->ename obj) 1)) @+
  9. Salut Pour parcourir et décomposer tous les groupes (setq grp (vla-get-groups (vla-get-activedocument(vlax-get-acad-object))))) (vlax-for gr grp (vla-delete gr) ; pour décomposer le groupe ) @+
  10. Salut Pour (gile) (ssget "_X" '((-4 . "< and") (0 . "*LINE") (0 . "~X*") (0 . "~M*") (-4 . "and>") ) ) peut aussi s'écrire (ssget "_x" (list (cons 0 "*LINE,~X*,~M*"))) pour zebulon_ Rien n'interdit un (setq ss (ssget "_+.:e:s" '((0 . "INSERT")(2 . "toto*")))) @+
  11. Salut Je ne suis pas un pro en c++, mais en arx ? @+
  12. Patrick_35

    decriptif des outils

    Salut Et pour compléter la réponse d'oli553, la touche F1 @+
  13. Salut Et avec la commande _recover ? @+
  14. Patrick_35

    Poignée dans les blocs

    Salut Trouvé dans l'aide (c'est dans AcadSelectionSet --> Highlight pour ceux qui le veulent en vlisp) @+ Sub Example_Highlight() ' This example creates several objects in model space. ' It then iterates through model space and highlights each ' object and displays it's Entity Name. ' Create a Ray object in model space Dim rayObj As AcadRay Dim basePoint(0 To 2) As Double Dim SecondPoint(0 To 2) As Double basePoint(0) = 3#: basePoint(1) = 3#: basePoint(2) = 0# SecondPoint(0) = 1#: SecondPoint(1) = 3#: SecondPoint(2) = 0# Set rayObj = ThisDrawing.ModelSpace.AddRay(basePoint, SecondPoint) ' Create a polyline object in model space Dim plineObj As AcadLWPolyline Dim points(0 To 5) As Double points(0) = 3: points(1) = 7 points(2) = 9: points(3) = 2 points(4) = 3: points(5) = 5 Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points) plineObj.Closed = True ' Create a line object in model space Dim lineObj As AcadLine Dim startPoint(0 To 2) As Double Dim endPoint(0 To 2) As Double startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0 endPoint(0) = 2: endPoint(1) = 2: endPoint(2) = 0 Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint) ' Create a circle object in model space Dim circObj As AcadCircle Dim centerPt(0 To 2) As Double Dim radius As Double centerPt(0) = 20: centerPt(1) = 30: centerPt(2) = 0 radius = 3 Set circObj = ThisDrawing.ModelSpace.AddCircle(centerPt, radius) ' Create an ellipse object in model space Dim ellObj As AcadEllipse Dim majAxis(0 To 2) As Double Dim center(0 To 2) As Double Dim radRatio As Double center(0) = 5#: center(1) = 5#: center(2) = 0# majAxis(0) = 10: majAxis(1) = 20#: majAxis(2) = 0# radRatio = 0.3 Set ellObj = ThisDrawing.ModelSpace.AddEllipse(center, majAxis, radRatio) ZoomAll ' Iterate through the model space collection and ' highlight each entity. Dim entName As String Dim entry As AcadEntity For Each entry In ThisDrawing.ModelSpace entName = entry.ObjectName entry.Highlight (True) MsgBox "The name of this object is " & entName, vbInformation, "Highlight Example" entry.Highlight (False) Next End Sub
  15. Ah oui, le problème est plus complexe Pour faire une sélection de tous les blocs portants le même nom (setq js (ssget "x" (list (cons 0 "INSERT") (cons 2 "MON_BLOC")))) Pour parcourir une sélection (setq n 0) (while (ssname js n) (setq bl (entget (ssname js n))) (princ (strcat "\nBloc " (cdr (assoc 2 bl)) " N° " (itoa n))) (setq n (1+ n)) ) Maintenant, pour parcourir les éléments qui composent un bloc (à inclure dans le premier while) (setq ent (entget (entnext (cdr (assoc -1 bl))))) (while (/= (cdr (assoc 0 ent)) "SEQEND") (princ (strcat "\nType d'élément " (cdr (assoc 0 ent)))) (setq ent (entget (entnext (cdr (assoc -1 ent))))) ) Et pour tester si c'est un attribut avec son étiquette (à inclure dans le deuxième while) (if (and (= (cdr (assoc 0 ent)) "ATTRIB") (= (cdr (assoc 2 "MON_ETI"))) (progn (je reprends mon premier post) ) ) @+
  16. Salut Par exemple (setq val (assoc 1 att1)) ; att1 pour le premier attribut (setq att2 (subst val (assoc 1 att2) att2)) ; att2 pour le 2em attribut et on remplace la valeur du 2em par le 1er (entmod att2) ; pour mettre à jour le 2em attribut (entupd (cdr (assoc -1 att2))) ; pour voir à l'écran que le 2em attribut a été mis à jour @+ [Edité le 13/12/2005 par Patrick_35]
  17. Merci (gile) Je suis comme Tramber, c'est le genre de page à conserver comme lien @9
  18. Salut Quand ça m'arrive, je fais une copie d'un shx existant que je renomme ensuite avec le manquant Remplacer un shx par un autre ne fonctionne pas à tous les coups. Dans ce cas, je fais la copie d'un autre shx @+
  19. Bonjour à tous Et pourquoi ne pas demander à patrick une stat sur les recherches, je pense que ça donnerai une très bonne base de départ @+
  20. Patrick_35

    Ce soir à la télé

    Salut Tu me surprends, d'après l'état de la recherche suivant l'ARSEP, je n'ai rien vu sur ce que tu affirmes. Si tu as un article sur ce sujet, je suis preneur @+
  21. Patrick_35

    Ce soir à la télé

    Ok, mais pas pour la SEP, c'est la myéline qui est atteinte, ce qui induit une mauvaise transmission entre les neurones. La régénération des nerfs est surtout valable pour ceux qui on eu des accidents afin de leurs redonner une certaine autonomie @+
  22. Patrick_35

    Comande \"_insert\"

    Salut Tu as deux manières de procéder En autolisp avec un bloc nommé par exemple Meuble1 sans attributs (command "_.insert" "Meuble1=C:\\rep1\\rep2\\rep3\\Meuble1.dwg" "0,0" "1" "1" "0") (entdel (entlast)) Si tu as un bloc avec des attributs, tu dois changer la variable attreq pour que ta commande se déroule sans encombre Si tu n'as pas bloqué le regen avec la variable regenmmode et que ton dessin est un peu lourd, cela peut être un inconvénient Maintenant par la méthode vlisp (vl-load-com) (vla-delete (vla-InsertBlock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point '(0.0 0.0 0.0)) " C:\\rep1\\rep2\\rep3\\Meuble1.dwg" 1 1 1 0)) Cela revient au même qu’en autolisp , sauf qu’il n’y a pas de regen, ni besoin de savoir si le bloc possède ou pas des attributs @+
  23. Merci (gile), c'est exactement ce que je cherchai J'avoue ne pas encore tout comprendre avec la fonction trans, mais je vais m'y pencher dessus ps: hje viens de modifier le lisp @+
  24. Patrick_35

    Relooking DCL

    Pas à ma connaissance. Les appels pour faire afficher les slides sont en autolisp @+
  25. Salut Je viens d'adapter uin de mes lisps à tes besoins Tu as juste cette ligne (setq Nom_bloc "MON_BLOC" Eti_Bloc '("ETI1" "ETI2" "ETI3")) à modifier pour donner le bon nom du bloc et de ses etiquettes Il y a juste une chose auquel je bute pour l'instant, c'est si ton scu est différent de ton sgc, je n'arrive pas encore à trouver la différence d'angle entre les deux @+ (defun Attributs_ini(Rea Cde) (setq dernier_ent (entlast)) ) (defun Attributs_rot(Rea Cde / ang bl js i n) (cond ((eq (car Cde) "ROTATE") (setq js (ssget "_p")) ) ((eq (car Cde) "GRIP_ROTATE") (setq js (cadr (ssgetfirst))) ) ((eq (car Cde) "INSERT") (setq js (ssadd)) (ssadd (entlast) js) ) ((eq (car Cde) "COPY") (setq js (ssadd) n (entnext dernier_ent)) (while n (ssadd n js) (setq n (entnext n)) ) ) ) (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 az bl) (while (not (eq (cdr (assoc 0 bl)) "SEQEND")) (if (eq (cdr (assoc 0 bl)) "ATTRIB") (progn (setq i 0) (while (nth i Eti_Bloc) (if (eq (strcase (cdr (assoc 2 bl))) (strcase (nth i Eti_Bloc))) (progn (setq bl (subst (cons 50 (angle '(0 0) (trans (getvar "UCSXDIR") 0 (trans '(0 0 1) 1 0 T)))) (assoc 50 bl) bl)) (entmod bl) (entupd (cdr (assoc -1 bl))) ) ) (setq i (1+ i)) ) ) ) (setq bl (entget (entnext (cdr (assoc -1 bl))))) ) ) ) ) (setq n (1+ n)) ) ) ) (princ) ) (defun c:srot(/ i j n) (if (setq i (vlr-reactors :vlr-Command-Reactor)) (progn (setq n 1 i (nth n (car i))) (while i (setq j nil) (if (or (eq (cdr (car (vlr-reactions i))) 'ATTRIBUTS_ROT) (eq (cdr (car (vlr-reactions i))) 'ATTRIBUTS_INI)) (setq j i) ) (if j (vlr-remove j) (setq n (1+ n)) ) (if (setq i (vlr-reactors :vlr-Command-Reactor)) (setq i (nth n (car i))) ) ) (if mrea_rot (princ (strcat "\n\tDésactivation de la Rotation des Attributs du bloc " Nom_bloc ".")) ) (setq mrea_rot nil) ) ) (princ) ) (defun c:rot() (if (not mrea_rot) (progn (c:srot) (vlr-command-reactor nil '((:vlr-commandwillstart . Attributs_ini))) (setq mrea_rot (vlr-command-reactor nil '((:vlr-commandEnded . Attributs_rot)))) (princ (strcat "\n\tActivation de la rotation des Attributs du bloc " Nom_bloc ".")) ) (princ (strcat "\n\tLa mise à jour de la rotation des Attributs du bloc " Nom_bloc " est déjà activée.")) ) (princ) ) (vl-load-com) (setq Nom_bloc "MON_BLOC" Eti_Bloc '("ETI1" "ETI2" "ETI3")) (princ (strcat "\n\tPour activer la mise à jour des Attributs du bloc " Nom_bloc ", lancez la commande ROT.\n\tPour revenir à la normale, faites la commande SROT.")) (princ) [Edité le 28/11/2005 par Patrick_35]
×
×
  • 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é