Aller au contenu

Messages recommandés

Posté(e)

Bonsoir à toutes et tous,

 

Et, oui comme le disais Patrick_35, y a un début à tout. Voici l'objectif de mon début :((réalisé avec un bouquin et un copain qui chatouille un peu le Lisp,...)

 

Depuis mon gabarit ferraillage ou figure les éléments utiles (tableau de nomenclatures, blocs, repère, n°), bref tout ce dont j'ai besoin, l'idée est de :

 

Envoyer une nomenclature dans son tableau,

Envoyer le bloc dyn concerné,

insérer le point d'insertion du repère de la barre,

Point intermédiaire de la ligne de rappel,

Point d'insertion du N° de repère. Et c'est là ou la commande s'arrête !!!!

 

message AutoCAD :(Depuis le début de la manip !)

 

Commande: _BARREDROITENOM pt d'insertion nomenclature : _.insert Entrez le nom

du bloc ou [?]: nom barre droite Spécifiez le point d'insertion ou

[Pointdebase/Echelle/X/Y/Z/Rotation]:

Entrez le facteur d'échelle en X, spécifiez le coin opposé ou [Coin/XYZ] :

1 Entrez le facteur d'échelle en Y : 1

Spécifiez l'angle de rotation :

Commande: _.explode

Sélectionnez un objet: d

Commande: pt d'insertion bloc : _.insert Entrez le nom du bloc ou [?]

barre droite>: ha barre droite Spécifiez le point d'insertion ou

[Pointdebase/Echelle/X/Y/Z/Rotation]:

Entrez le facteur d'échelle en X, spécifiez le coin opposé ou [Coin/XYZ] :

1 Entrez le facteur d'échelle en Y : 1

Spécifiez l'angle de rotation :

Commande: pt d'insertion repere acier : _.insert Entrez le nom du bloc ou [?]

: rep acier barre Spécifiez le point d'insertion ou

[Pointdebase/Echelle/X/Y/Z/Rotation]:

Entrez le facteur d'échelle en X, spécifiez le coin opposé ou [Coin/XYZ] :

1 Entrez le facteur d'échelle en Y : 1

Spécifiez l'angle de rotation :

Commande: pt intermediere de ligne de repere : pt insertion numero de repere :

_.layer

Calque courant: "BAC FERRAILLAGE REPERE PLAN"

Entrez une option

[?/Etablir/CHoisir/Nouv/ACtif/INactif/COuleur/TLigne/EPaisseurl/MAtériau/Tracé/S

Tracé/Geler/Libérer/Verrouiller/Déverrouiller/étAt]: *Incorrect*

ERREUR d'application: irfcld

 

Commande:

Commande: ; erreur: commande AutoCAD incorrecte: nil

 

Le LISP

 

 ; *******************************************************************
;                      barre droitenom.LSP
;

  

  ;(modes '("CMDECHO" "ATTDIA" "ATTREQ" "GRIDMODE" "UCSFOLLOW"))
  ;(setvar "cmdecho" 0)               ; turn cmdecho off
  ;(setvar "attdia" 0)                ; turn attdia off
  ;(setvar "attreq" 1)                ; turn attreq on
  ;(setvar "gridmode" 0)              ; turn gridmode off
  ;(setvar "ucsfollow" 0)             ; turn ucsfollow off

(defun C:barredroitenom ()

(setq p3 (getpoint "\pt d'insertion  nomenclature : "))
(command "_.insert"" nom barre droite " p3 1 1 "")
(command "_.explode" "d")

(setq p2 (getpoint "\pt d'insertion bloc : "))
(command "_.insert"" ha barre droite " p2 1 1"")

(setq p4 (getpoint "\pt d'insertion  repere acier : "))
(command "_.insert"" rep acier barre " p4 1 1 "")


(setq p5 (getpoint "\pt intermediere de ligne de repere : "))
(setq p6 (getpoint "\pt insertion numero de repere : "))
(command "_.layer" bac ferraillage repere plan "")
(command "_.pline" p4 p5 p6 "")

(command "_.insert"" numerorepere " p6 1 1 "")
(command "_.explode" "d"))

 

Des idées ??

 

Merci d'avance

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Bravo lili, ça fait plaisir à voir :)

 

Je ne pense pas que c'est un problème de version, mais plutôt une option de commande française qui a du changer dans la commande _.layer (encore un problème de traduction)

 

Par exemple, sur la R12, le zoom précèdent se nommais avant, et maintenant, c'est précèdent. Donc le caractère a à été remplacé par le p, d'où l'intérêt d'internationaliser ses lisps. Pour le zoom, c'est donc _p (pour previous)

 

Donc pour en revenir à ta commande, donne l'option en anglais qu'on la traduise

 

@+

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

Posté(e)

Rere,

 

Bravo lili, ça fait plaisir à voir

 

Merci beaucoup de tes encouragements Patrick_35 !

 

Donc pour en revenir à ta commande, donne l'option en anglais qu'on la traduise

 

 

Heu, désolé, j'comprend pas !

 

Et pourquoi alors ça marche sur une 2007, et sur une 2008 que je viens de tester chez un collègue ??? !

 

Une fois de plus, comprend pas !

 

Merci d'avance et @+.

 

PS : Patrick_35, J'suis parti sur un nouveau TP en utilisant LXL pour la mise à jour des différentes infos des attributs (même de covadis !), c'est terrible !!! Merci encore pour cet outil super !

 

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Salut,

 

Ça peut être aussi une histoire de version, si la commande CALQUE (_LAYER) a changé entre 2007 et 2008.

J'ai vu un cas similaire avec le LISP M2S et le changement de la commande EXTRUSION avec le passage à 2007 (voir ce sujet)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Au temps pour moi, j'avais lu trop vite.

 

Mais si ça ne marche pas uniquement sur ton poste, ça vient probablement de ce qu'il y a sur ton poste ou de la version du LISP chargée sue ton poste.

 

L'erreur semble venir de cette expression :

 

(command "_.layer" bac ferraillage repere plan "")

 

"-.layer" devrait être suivi de l'option (en version internationale : "_Make" "_Set" "_New" "_ON" "_OFF" "_Color" "_Ltype" "_LWeight" "_Plot" "_PStyle" "_Freeze" "_Thaw" "_LOck" "_Unlock" "_stAte") puis du nom du calque sous forme de chaine (avec les guillemets) "bac ferraillage repere plan", puis d'un double guillemet "" (pour Entrée).

 

[Edité le 2/10/2007 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

lili2006

 

Juste une question au sujet de ton code

(command "_.layer" bac ferraillage repere plan "") 

 

Il n'y aurai pas un soucis de " devant bac ferraillage .

 

MDSV31

 

[Edité le 2/10/2007 par mdsv31]

 

Bon désolé, pas vue le message de (gile).

 

[Edité le 2/10/2007 par mdsv31]

Dessinateur Indépendant

Posté(e)

Bonjour à toutes et tous,

 

Merci à mdsv31, (gile) et Patrick_35. En effet le pb provient bien de l'insertion sur le bon calque. Ce calque existe dans le gabarit et je voudrais forcer l'insertion de ma ligne de repère dans ce calque.

 

(Gile), pourrais-tu m'écrire la ligne correctement pour réaliser cette opération suite à tes commentaires (

"-.layer" devrait être suivi de l'option (en version internationale : "_Make" "_Set" "_New" "_ON" "_OFF" "_Color" "_Ltype" "_LWeight" "_Plot" "_PStyle" "_Freeze" "_Thaw" "_LOck" "_Unlock" "_stAte") puis du nom du calque sous forme de chaine (avec les guillemets) "bac ferraillage repere plan", puis d'un double guillemet "" (pour Entrée).

)

 

Aperçu du rendu du Lisp

 

Merci encore à tous.

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Salut,

 

Si tu veux rendre le calque "bac ferraillage repere plan" courant avant de créer la polyligne et l'insertion du bloc, tu peux faire :

 

(command "_.layer" "_m" "bac ferraillage repere plan" "")

 

l'utilisation de l'option "_Make" (Etablir en français) plutôt que "_Set" ("CHoisir") créera le calque s'il n'existe pas et évite donc à la routine d'échouer si c'était le cas.

 

Pour revenir à l'état de calque précédent, tu peux faire :

 

(command "_.layerp")

 

Pour changer le calque courant, on peut aussi, en LISP, agir directement sur les variables système (CLAYER en l'occurence). Dans ce cas, il faut que le calque existe dans le dessin) :

- stocker le calque courant dans la variable cc : (setq cc (getvar "cLAYER"))

- rendre le calque "bac ferraillage repere plan" courant : (setvar "CLAYER" "bac ferraillage repere plan")

- puis, pour restaurer cc : (setvar "CLAYER" cc)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Re,

 

Merci beaucoup (Gile), maintenant tout marche à merveille .

 

Pour aller plus loin, maintenant je voudrais que mon bloc dyn ferraillage arrive dans son calque (également crée sur le gabarit) du nom de "BAC FERRAILLAGE ACIERS". De même pour les écritures de la nomenclature dans le calque "BAC FERRAILLAGE NOMENCLATURE".

 

Comment dois-je m'y prendre ?

 

Puis-je reprendre cette expression ? (et surtout sur quelle ligne je dois la mettre !)

 

(command "_.layer" "_m" "bac ferraillage repere plan" "")

 

Merci d'avance.

 

PS: Cece reste encore trés flou pour moi et je suis seul aujourd'hui, alors...

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Tu peux changer le calque courant avant chaque appel à une commande AutoCAD par la fonction command, donc avant la ligne de code :

 

(command "_.insert" " rep acier barre " p4 1 1 "")

 

tu places :

 

(command "_.layer" "_m" "BAC FERRAILLAGE ACIERS" "")

 

idem avant :

 

(command "_.insert" "numerorepere" p6 1 1 "")

 

avec le calque correspondant.

 

Comme je disais plus haut, si tu veux qu'à la fin du LISP le calque courant soit le même qu'avant le lancement du LISP, il faut, au début du LISP, stocker son nom dans une variable :

 

(setq cc (getvar "CLAYER"))

 

pour pouvoir le restaurer à la fin :

 

(command "_.layer" "_m" cc "")

ou, plus élégamment :

(setvar "CLAYER cc)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Pour éviter de changer le calque courant plusieurs fois dans la routine, il est aussi possible de changer le calque de chaque objet créé (insertion de bloc ou polyligne) après sa création.

 

La fonction LISP entlast retourne la dernière entité crée, donc après l'insertion du bloc, par exemple, on change le calque de la référence de bloc avec la commande CHPROP :

 

(command "_.insert" "rep acier barre" p4 1 1 "")

(command "_chprop" (entlast) "" "_LAyer" "bac ferraillage aciers" "")

 

de même pour la polyligne et l'autre bloc, dans ce cas le calque courant n'a pas changé, pas de soucis de restauration de l'environnement.

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

rererere,...

 

Ok (gile). J'ai testé tes diverses fonctions et cela fonctionne parfaitement. dés que je vais avoir du temps, je vais transformer tous mes blocs dyn à l'insertion avec cette méthode. Penses-tu qu'il faut écrire un Lisp par insertion, ou bien je peux combiner l'ensemble ?

 

En tous cas, merci encore à tous de cette aide si précieuse lorsque l'on démarre, cela fait un peu peur de se lancer seul, mais, il est vrai que quand on arrive à faire ce que l'on souhaite, quelle bonheur !

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Salut lili2006,

Bienvenue dans le merveilleux monde du lisp !!!!

Tu verras, c'est un plaisir sans fin !

 

Juste un conseil pour commencer : utilise l'éditeur Visual-Lisp d'Autocad (ou un autre équivalent), cela te permettra d'éviter le genre d'erreur comme oublier de mettre un guillemet, de chercher longtemp quel parenthèse il manque, etc....

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Re,

 

Merci beaucoup de tes encouragements et de tes conseils Bred

 

Tu verras, c'est un plaisir sans fin !

 

J'en doute pas une seconde, mais pour le moment, c'est plutôt une "galère" sans fin. Le p'tit truc que tu vois écrit ci-dessus, c'est une semaine à 3 h00 par jour avec un bouquin et de temps à autres un copain qui chatouille un peu. Grace à vous, pb résolu dans la journée,... Mais je ne voudrais pas abuser de la bonne volonté de chacun pourtant je sais que j'ai besoin de vous (et d'ailleurs, je compte sur vous !!!) Bon courage, alors (et patience surtout !).

 

Au plaisir,

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Rerere,

 

Merci également à toi lovecraft de tes encouragements. Je pense que tu as un niveau tout de même supérieur au mien, mais on peut rester trés longtemps débutant au vu de la somme des connaissances à avoir,...

 

profs qui s'investissent c'est rare de nos jours
. Je fais malheuresement (pour nos enfants et j'en ai 4 donc je sais de qoui je parle !)également ce triste constat,...

 

Vous participez un peu chacun à me donner la motivation d'aller plus loin et si moi je vais plus loin, mes étudiants et stagiaires aussi, forcément,...

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)
Mais je ne voudrais pas abuser de la bonne volonté de chacun

Abuse !!!... personnellement j'en abuse et en abuserais encore !

(Je suis beaucoup moins présent ces derniers temps dans ce forum pour une raison d'emplois du temps privé assez chargé.... )

 

En fait, comme me l'a souvent dit (gile), et je le comprends trés bien maintenant, on apprends beaucoups en aidant les autres !

Cela fait d'une pierre deux coup !

 

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Bonjour à toutes et tous,

 

Bred

on apprends beaucoups en aidant les autres !

 

Je vois tout à fait ce que tu veux dire, car c'est mon quotidien, MAIS, je ne suis pas habitué encore à être le demandeur. Ceci dis, ce coté de la barrière ne me déplait pas une seconde. Maintenant, comme tout un chacun, je suis conscient qu'il va falloir du temps et pouir moi aussi il est difficile d'en dégager suffisament, si je ne veux pas négliger et ma famille et mes étudiants et stagiaires. Ceci dis, on a le temps, non ?

 

Bonne journée.

Civil 3D 2025 - COVADIS_18.3b

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

  • 2 semaines après...
Posté(e)

Bonjour à toutes et tous,

 

Voilà ou j'en suis à ce jour :

 

Avant :

 ; *******************************************************************
;                      barre droitenom.LSP
;

  

  ;(modes '("CMDECHO" "ATTDIA" "ATTREQ" "GRIDMODE" "UCSFOLLOW"))
  ;(setvar "cmdecho" 0)               ; turn cmdecho off
  ;(setvar "attdia" 0)                ; turn attdia off
  ;(setvar "attreq" 1)                ; turn attreq on
  ;(setvar "gridmode" 0)              ; turn gridmode off
  ;(setvar "ucsfollow" 0)             ; turn ucsfollow off

(defun C:barredroitenom ()

(setq p3 (getpoint "\pt d'insertion  nomenclature : "))
(command "_.insert"" nom barre droite " p3 1 1 "")
(command "_.explode" "d")

(setq p2 (getpoint "\pt d'insertion bloc : "))
(command "_.insert"" ha barre droite " p2 1 1"")

(setq p4 (getpoint "\pt d'insertion  repere acier : "))
(command "_.insert"" rep acier barre " p4 1 1 "")


(setq p5 (getpoint "\pt intermediere de ligne de repere : "))
(setq p6 (getpoint "\pt insertion numero de repere : "))
(command "_.layer" bac ferraillage repere plan "")
(command "_.pline" p4 p5 p6 "")

(command "_.insert"" numerorepere " p6 1 1 "")
(command "_.explode" "d"))

 

Aprés :

; *******************************************************************
;                      barre droitenom.LSP
;

  

  ;(modes '("CMDECHO" "ATTDIA" "ATTREQ" "GRIDMODE" "UCSFOLLOW"))
  ;(setvar "cmdecho" 0)               ; turn cmdecho off
  ;(setvar "attdia" 0)                ; turn attdia off
  ;(setvar "attreq" 1)                ; turn attreq on
  ;(setvar "gridmode" 0)              ; turn gridmode off
  ;(setvar "ucsfollow" 0)             ; turn ucsfollow off

(defun C:bdh ()

(setq p3 (getpoint "\pt d'insertion  nomenclature : "))
(command "_.insert"" nom barre droite " p3 1 1 "")
(command "_.explode" "d")

(setq p2 (getpoint "\pt d'insertion bloc : "))
(command "_.insert"" ha barre droite " p2 1 1"")

(setq p4 (getpoint "\pt d'insertion  repere acier : "))
(command "_.insert"" rep acier barre " p4 1 1 "")


(setq p5 (getpoint "\pt intermediere de ligne de repere : "))

(command "_.pline" p4 p5 "")
(command "CHANGER" "d" "" "p" "ca" "BAC FERRAILLAGE REPERE PLAN" "")
(setq p6 (getpoint "\pt insertion numero de repere : "))
(command "_.pline" p5 p6 "")
(command "CHANGER" "d" "" "p" "ca" "BAC FERRAILLAGE REPERE PLAN" "")
(command "_.insert"" numerorepere " p6 1 1 "")
(command "_.explode" "d")) 

 

 

Ce qui est sûr, c'est que cela marche comme je voulais, mais de là à dire que c'est la bonne écriture,....

 

Merci d'avance de vos remarques et suggestions (j'en ai encore une quinzaine comme ça et je reviendrai vous voir pour savoir comment les ranger toutes dans un seul fichier Lisp,... Tiens, cela pourrait être un challenge débutant, non???).

 

(gile) & Patrick_35, je n'ai pas tenu compte de vos conseils afin d'avoir votre avis sur ce que je propose. Si vous aviez le temps et l'envie je serai intéressé pour savoir comment vous auriez fait pour répondre au problème.

 

Dans le même esprit (et c'est pour cela que j'aimerai pouvoir combiner l'ensemble,...chose possible d'aprés Patrick_35, ) insertion d'une barre double avec crochet à 45 ° de part et d'autre :

 

; *******************************************************************
;                 bdoublenom.LSP
;

  

  ;(modes '("CMDECHO" "ATTDIA" "ATTREQ" "GRIDMODE" "UCSFOLLOW"))
  ;(setvar "cmdecho" 0)               ; turn cmdecho off
  ;(setvar "attdia" 0)                ; turn attdia off
  ;(setvar "attreq" 1)                ; turn attreq on
  ;(setvar "gridmode" 0)              ; turn gridmode off
  ;(setvar "ucsfollow" 0)             ; turn ucsfollow off

(defun C:bd4545nom ()

(setq p3 (getpoint "\pt d'insertion  nomenclature : "))
(command "_.insert"" NOM BD4545 " p3 1 1 "")
(command "_.explode" "d")

(setq p2 (getpoint "\pt d'insertion bloc : "))
(command "_.insert"" HA crochet double 45° 45° " p2 1 1"")

(setq p4 (getpoint "\pt d'insertion  repere acier : "))
(command "_.insert"" rep acier barre " p4 1 1 "")


(setq p5 (getpoint "\pt intermediere de ligne de repere : "))

(command "_.pline" p4 p5 "")
(command "CHANGER" "d" "" "p" "ca" "BAC FERRAILLAGE REPERE PLAN" "")
(setq p6 (getpoint "\pt insertion numero de repere : "))
(command "_.pline" p5 p6 "")
(command "CHANGER" "d" "" "p" "ca" "BAC FERRAILLAGE REPERE PLAN" "")
(command "_.insert"" numerorepere " p6 1 1 "")
(command "_.explode" "d")) 

 

, bref, ça reste la même chose mais pour moi, c'est déjà un grand pas !

 

Au plaisir.

 

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Salut

 

Le principal, c'est que tu sois content du résultat. Le style d'écriture viendra ensuite pour te perfectionner. Dabord maîtriser les bases. ;)

 

La seule remarque que je pourrait formuler c'est que tu pourrait utiliser la même variable car celles que tu as donné ne servent qu'une fois

 

Ah, une autre, tu ne verifies pas si un point d'insertion n'a pas été saisi (style faire entrée invonlontairement lors de la question)

 

@+

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

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é