-
Compteur de contenus
397 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Serge
-
Je devine que Patrick va supprimer ce fil. En attendant, j'ai entendu cette histoire, j'ai du contracter certains noms pour ne pas attirer la CIA, la NSA et autres sur ce site :-) Georges W. se rend en Angleterre visiter la reine. GW: Comment faites-vous pour vous entourer de personnes intelligentes? Reine: Facile. Tu n'a qu'à poser des questions. Tu vas voir. Elle prend une clochette et appelle son premier ministre. Reine à TB: Si tes parents ont un seul enfant, et que ce n'est ni ta soeur ni ton frère, qui est-ce? TB: C'est moi ! GW tout impressionné se promet de retenir la leçon. De retour à son bureau, il rencontre son vice-président DC et lui demande: GW: Si tes parents ont un seul enfant, et que ce n'est ni ta soeur ni ton frère, qui est-ce? DC: Je ne sais pas. Je vais te rapporter la réponse sous peu. Plus tard, DC croise le sécrétaire CP dans un corridor et lui demande: DC: Si tes parents ont un seul enfant, et que ce n'est ni ta soeur ni ton frère, qui est-ce? EC: C'est moi ! DC retourne alors voir GW et lui dit: DC: J'ai trouvé la réponse. C'est CP GW: Espèce d'idiot, c'est TB Serge
-
Il doit y avoir un mauvais caractère dans ma réponse. Notre sitre sera prêt demain ou après demain. Serge
-
Bruno, Si je puis me permettre une pub: http://www.cadnovation.com/devcui/fr/EU/uamj.asp (aujourd'hui) http://www.cadnovation.com/fr/EU/uamj.asp (à partir du 31 aout ou du 1er septembre) D'autre part, j'avais déjà fait un petit sondage pour savoir si un manuel de Lisp serait désiré. Je n'avais reçu qu'une réponse. Je crois que la plupart des gens en veulent, mais en autant que ça soit gratis. Est-ce que je me trompe? Serge
-
Spline - Les roses étaient toutes rouges....
Serge a répondu à un(e) sujet de ribbit dans AutoCAD 2000 à 2002
Les splines ont au moins 2 utilités: 1) Esthétique -> on s'en sert pour les lignes de repères (leader) 2) Conception mécanique -> elle permette de créer des formes libres (beaucoup plus précises que Pedit -> Spline On peut créer des formes libres à l'aide de points saisis d'un palpeur (gage) qui va nous donner une séries de points qui, imprécision de l'appareil, nous donneraient des oscillations. Des options telles que Tolerance permettent de rectifier les courbes. Une des lacunes d'AutoCAD de base est l'abscence de concept de continuiité de type C0 et C1. Une continuité ou courbe de type C0 décrit une condition où 2 droites se joignent (non tangents). Une courbe de type C1 décrit un un raccord entre un arc et une droite respectant les mêmes tangentes (e.g. l'arc généré par la commande Racoord (_Fillet) dans un rectangle. Finalement, une courbe de type C2 décrit une courbe lisse comme celle produite par AutoCAD. Voici des adresses pour en connaitre davantage http://www.siggraph.org/education/materials/HyperGraph/modeling/splines/splines0.htm http://www.cs.virginia.edu/~gfx/Courses/2004/Intro.Spring.04/Lectures/lecture23.ppt http://www.iro.umontreal.ca/~dift3730/notes/courbes2004_3pages.pdf En plus des manuels L'univers AutoCAD (R14 et 2000) par votre humble serviteur :-) Serge -
J'avais publié cette routine le 24 septembre 2001 sur un autre forum . (defun c:dimlarc ( / l$ longueur object objectGet objectSel pt rayon theta ) (setq objectSel (entsel "\nSélectionnez l'arc: ")) (cond ((not objectSel) nil) ; No-op ((/= "ARC" (cdr (assoc 0 (setq objectGet (entget (setq object (car objectSel))))))) (princ "\nPas un arc!") ) (t (setq pt (cadr objectSel)) (setq theta (- (cdr (assoc 51 objectGet)) (cdr (assoc 50 objectGet)))) (setq theta (rem (+ theta pi pi) (+ pi pi))) (setq rayon (cdr (assoc 40 objectGet))) (setq longueur (* rayon theta)) (setq l$ (rtos longueur (getvar "dimunit") (getvar "dimdec"))) (command "._dimangular" pt "_Text" l$ pause) ) ) (princ) ) (princ) Serge
-
Salut Bruno, Veux-tu simplement obtenir entre quels 2 sommets ton point choisi se situe, en prenant le chemin le plus court entre ce point et l'objet? Serge
-
Patrick, Voici 3 exemples où qaflags fixée à 2 peut être utilie (il y en aurait bien d'autres) 1) _setvar ? * (pour lister les variables) 2) _-layer ? * (por lister les calques) 3) _dblist On peut ensuite copier l'historique de la fenêtre facilement et sans y faire de nettoyage, Serge
-
Didier, Ce n'est pas de moi, je n'ai ni ce genre d'idée, ni le talent artistique. Mais je trouvais cette image rigolote. La supercherie joue sur la taille des individus. Serge
-
Patrick, J'ai une assez bonne idée du temps, de la disponibilité et de l'argent que tu dois fournir pour maintenir ce site vivant. Pour ceux qui en doute, il y a eu récemement des discussions houleuses sur un autre forum qui a changé d'hébergeur et il fut état des couts mensuels (ce à quoi je ne peux que remercier les 2 bélligérants de s'être impliqués dans la communauté, peu importe leurs différents). Je pense que le meilleur don que je puisse faire est mon temps, sinon placer une bannière pour publiciser le MVPort. Serge
-
Patrick, Dans ce programme, une amélioration pour trouver les sommets qui généralise les cas. Je me souviens que tu avais un fil là dessus. Bruno, Voici donc une routine modifiée qui tient compte des plines éditée en "Fit curve" et "spline". (defun c:FindClosestPoints ( / cecolor cordes i liste n objSel pline plineGet pt sommet sommets ) (cond ((not (setq objSel (entsel "\nMontrez la polyligne optimisée: "))) (princ "\nAucun objet sélectionné.") ) ((not (wcmatch (cdr (assoc 0 (setq plineGet (entget (setq pline (car objSel)))))) "*POLYLINE")) (princ "\nPas une polyligne.") ) ((not (setq pt (getpoint "\nMontrez un point: "))) (princ "\nPas de point détecté.") ) (t (setq sommets (getVertices pline)) (setq i 0 n (length sommets)) (setq cordes nil) (while (< i n) (setq sommet (nth i sommets)) (setq liste (list i (distance pt sommet) sommet)) (setq cordes (cons liste cordes)) (setq i (1+ i)) ) (setq cordes (vl-sort cordes (function (lambda (dist1 dist2) (< (cadr dist1) (cadr dist2)))))) ;; Cercles témoins, rayon = 2% de l'écran (setq cecolor (getvar "cecolor")) (setvar "cecolor" "1") (command "._circle" "_none" (caddr (nth 0 cordes)) (* 0.02 (getvar "viewsize"))) (setvar "cecolor" "2") (command "._circle" "_none" (caddr (nth 1 cordes)) (* 0.02 (getvar "viewsize"))) (setvar "cecolor" "3") (command "._circle" "_none" (caddr (last cordes)) (* 0.02 (getvar "viewsize"))) (setvar "cecolor" "4") (command "._circle" "_none" pt (* 0.02 (getvar "viewsize"))) (setvar "cecolor" cecolor) ;; Point choisi (cyan) : coordonnée (princ "\nPoint choisi (cyan) : ") (princ pt) ;; Sommet le plus près (rouge) [iD, distance]: coordonnée (princ (strcat "\nSommet le plus près (rouge) [" (itoa (car (nth 0 cordes))) ", dist = " (rtos (cadr (nth 0 cordes))) "]: ") ) (princ (caddr (nth 0 cordes))) ;; Sommet suivant le plus près (jaune) [iD, distance]: coordonnée (princ (strcat "\nSommet suivant le plus près (jaune) [" (itoa (car (nth 1 cordes))) ", dist = " (rtos (cadr (nth 1 cordes))) "]: ") ) (princ (caddr (nth 1 cordes))) ;; Sommet le plus loin (vert) [iD, distance]: coordonnée (princ (strcat "\nSommet le plus loin (vert) [" (itoa (car (last cordes))) ", dist = " (rtos (cadr (last cordes))) "]: ") ) (princ (caddr (last cordes))) ) ) (princ) ) (defun getVertices ( ename / plineGet return vertex vertexGet ) (setq return nil) (cond ((or (/= (type ename) 'ENAME) (not (setq plineGet (entget ename)))) (setq return nil)) ((= "POLYLINE" (cdr (assoc 0 plineGet))) (setq vertex (entnext ename)) (while (= "VERTEX" (cdr (assoc 0 (setq vertexGet (entget vertex))))) (setq return (cons (cdr (assoc 10 vertexGet)) return)) (setq vertex (entnext vertex)) ) (setq return (reverse return)) ) ((= "LWPOLYLINE" (cdr (assoc 0 plineGet))) (setq return (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) plineGet))) ) (t (setq return nil)) ) return ) (princ "\nTapez FindClosestPoints pour trouver les sommets les plus près") (princ) Serge
-
Pako, Une grande déception en 2005: le choix Pouces / mm a disparu, ce qui veut dire que si ton espace objet est en mm et ta feuille en espace papier est une 8.5x11, le rapport de traçage sera 1=25.4, ce qui est quelque peu ennuyeux (outre les rapport d'échelle indivuel de chaque fenêtre flottante). Serge
-
nobless, En fait, je ne regarde malheureuseument pas le titre du forum, j'y vais par chronologie. C'étais mon erreur. Pour ce qui est du changement d'espace, tu dispose de l'express tools CHSPACE. Pour ce qui est de la création du bloc ayant ses propres coordonnées en attribut, tu as une condition stable, soit que tes blocs n'ont aucune raison d'être déplacés (géoréférencement) : ce qui enlève les risques d'erreurs et le besoin de créer des réacteurs. Tu peux même utiliser des textes distants. De très nombreux exemples sont disponibles sur les forums. Cependant, n'aurais-tu pas envie de savoir ce que Covadis peut t'offrir? Serge
-
bruno_l, Juste une petite remarque. Dans un environnement où d'autres applications définissent des réacteurs, tu risque de les effacer. Au lieu de vlr-remove-all, tu peux stocker le réacteur dans une variable, ce qui te permettra de faire un nettoyage spécifique. Exemple: (if eacu_layoutSysVar::commandReactor (vlr-remove eacu_layoutSysVar::commandReactor)) (setq eacu_layoutSysVar::commandReactor (vlr-editor-reactor nil '( (:vlr-CommandWillStart . eacu_layoutSysVar:CommandWillStartEvent) (:vlr-CommandEnded . eacu_layoutSysVar:CommandEndedEvent) (:vlr-CommandCancelled . eacu_layoutSysVar:CommandCancelledEvent) (:vlr-CommandFailed . eacu_layoutSysVar:CommandCancelledEvent) ) )) Serge
-
Nobless, En quelle version familliale est-tu? Famille 14 (14.0) Famille 15 (2000, 2000i, 2002) Famille 16 (2004, 2005) Serge
-
Si tu es dans AutoCAD, tu peux toujours retoucher les sections ***POP0 ou les ***POP500 du menu ***POP0 **SNAP // Shift-right-click if using the default AUX2 and/or BUTTONS2 // menus. [Menu curseur &accrochage aux objets] ID_Tracking [Point de &repérage temporaire]_tt ID_From [&Depuis]_from ... ... ID_Osnap [Accrochage aux ob&jets...]'_+dsettings 2 ID_facultatif1 [Éditer DOS]^c^cEDIT ID_facultatif2 [Éditer Windows]^c^cNOTEPAD ID_facultatif3 [Éditer Untel]^c^cSTART ULTRAEDIT Serge
-
Voici une image animée, question de s'amuser sans se casser la tête. Y a-t-il 12 ou 13 personnages dans la prochaine image. Attendez quelques secondes avant de répondre. images/articles/12ou13.gif Serge
-
Tramber, Pour ajouter, 3 possibilités ; mais une seule recommendable pour les néophytes, soit OpenWithList. Voici un exemple des 3 méthodes. Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.dwg\shellex] [HKEY_CLASSES_ROOT\.dwg\shellex\{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}] @="{AC1DB655-4F9A-4c39-8AD2-A65324A4C446}" [HKEY_CLASSES_ROOT\.emf\OpenWithProgids] "emffile"=hex(0): [HKEY_CLASSES_ROOT\.acm\OpenWithList] [HKEY_CLASSES_ROOT\.acm\OpenWithList\devenv.exe] @="" Serge
-
nobless, Si j'ai bien compris, tu veux plutôt que tes attributs se redressent sur la base de fenêtre pour qu'il soient toujours horizontaux sur papier. Est-ce cela? Serge
-
Je pense que Virgule_69 veut les 2 sommets le plus près et non le point correspondant à la perpendiculaire. Ceci montre les 2 sommets le plus près ainsi que le plus éloigné. 3 cercles tépoins sont dessinnés. (defun c:FindClosestPoints ( / cecolor cordes i liste n objSel pline plineGet pt sommet sommets ) (cond ((not (setq objSel (entsel "\nMontrez la polyligne optimisée: "))) (princ "\nAucun objet sélectionné.") ) ((/= "LWPOLYLINE" (cdr (assoc 0 (setq plineGet (entget (setq pline (car objSel))))))) (princ "\nPas une polylignes optimisée.") ) ((not (setq pt (getpoint "\nMontrez un point: "))) (princ "\nPas de point détecté.") ) (t (setq sommets (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) plineGet))) (setq i 0 n (length sommets)) (setq cordes nil) (while (< i n) (setq sommet (nth i sommets)) (setq liste (list i (distance pt sommet) sommet)) (setq cordes (cons liste cordes)) (setq i (1+ i)) ) (setq cordes (vl-sort cordes (function (lambda (dist1 dist2) (< (cadr dist1) (cadr dist2)))))) ;; Cercles témoins, rayon = 2% de l'écran (setq cecolor (getvar "cecolor")) (setvar "cecolor" "1") (command "._circle" "_none" (caddr (nth 0 cordes)) (* 0.02 (getvar "viewsize"))) (setvar "cecolor" "2") (command "._circle" "_none" (caddr (nth 1 cordes)) (* 0.02 (getvar "viewsize"))) (setvar "cecolor" "3") (command "._circle" "_none" (caddr (last cordes)) (* 0.02 (getvar "viewsize"))) (setvar "cecolor" cecolor) ;; Sommet le plus près [iD, distance]: coordonnée (princ (strcat "\nSommet le plus près [" (itoa (car (nth 0 cordes))) ", dist = " (rtos (cadr (nth 0 cordes))) "]: ") ) (princ (caddr (nth 0 cordes))) ;; Sommet suivant le plus près [iD, distance]: coordonnée (princ (strcat "\nSommet suivant le plus près [" (itoa (car (nth 1 cordes))) ", dist = " (rtos (cadr (nth 1 cordes))) "]: ") ) (princ (caddr (nth 1 cordes))) ;; Sommet le plus loin [iD, distance]: coordonnée (princ (strcat "\nSommet suivant le plus près [" (itoa (car (last cordes))) ", dist = " (rtos (cadr (last cordes))) "]: ") ) (princ (caddr (last cordes))) ) ) (princ) ) Serge
-
API AutoCAD Mechanical 2004
Serge a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Est-ce que tu as crée valueMap? CMapStringToString valueMap; valueMap.SetAt("NAME", "Name"); valueMap.SetAt("MATERIAL", "Gold"); valueMap.SetAt("NOTE", "MyNote"); valueMap.SetAt("VENDOR", "Me"); Est-ce que ces champs correspondent au standard actif? Voir Options -> AM:Standards -> BOM Support Serge -
API AutoCAD Mechanical 2004
Serge a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Oops, il me manquait une ligne. Comme ça, c'est mieux: template void PtArxToAds (T PointArx, ads_point& PointAds) { PointAds[X] = PointArx.x; PointAds[Y] = PointArx.y; PointAds[Z] = PointArx.z; } -
API AutoCAD Mechanical 2004
Serge a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Si SetOrigin ne comporte pas de modèle avec un point2d, il faut convertir les données, ce qui est assez fréquent comme manoeuvre. Tu peux te créer des fonctions de conversion: void PtArxToAds (T PointArx, ads_point& PointAds) { PointAds[X] = PointArx.x; PointAds[Y] = PointArx.y; PointAds[Z] = PointArx.z; } ou son inverse J'utilise AutoCAD Mechanical 2004 avec Inventor 7 (donc pas DX). Tu commence à me soulever des doutes. Tant qu'à y être, a tu déjà utiliser les interfaces pour VBA? On peut créer un objet avec le getInterface mais par la suite, tous les membres sont inaccessibles. Je crois qu'ils ont été conçus pour Mechanical Desktop, et non Mechanical tout court. Serge -
Tu peux toujours remplacer (cons 1 chaine) par (cons 1 (strcat "*" chaine "*")) Cependant, cette solution est sensible au majuscules/minuscules. Il faut passer par une boucle plus détaillée. Serge
-
La solution de Didier est plus flexible. Il manque un petit détail: comment choisir les éléments à supprimer. Ceci se fera avec un ssmemb (setq ss1 (ssget "_w" '(0 0) '(5 5))) (setq ss2 (ssget '(1 1))) (setq i 0 n (if (and ss1 ss2) (sslength ss2) 0)) (while (< i n) (setq item (ssname ss i)) (if (ssmemb item ss1) (ssdel item ss1)) (setq i (1+ i)) ) Serge
-
API AutoCAD Mechanical 2004
Serge a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Ahryman40k Initialement, je croyais que ton besoin d'appeler explodeToOwnerSpace était pour faire un équivalent de Burst et d'accoler un PartRef automatiquement, non pour supporter 2 environnements. On est en train de développer eBOM3 dont l'une des caractéristiques est de surveiller l'insertion de symboles Standards de Mechanical ("Iso" ou "Ansi") qui ne seraient pas conformes à l'inventaire du client. Selon le cas, convertir le PartRef automatique de Mechanical en "Profilé d'acier" ou en "Non conforme". Selon le cas toujours, on lit de l'information supplémentaire depuis une table de correspondance d'une base de donnée pour obtenir des numéros d'inventaire, description, etc. Bonne chance, c'est un beau projet. Serge
