Помоги правильно добавить в этот код форматы А3х3 ...
Tạo vào: 31 tháng 3, 2026
Trả lời bằng GPT-5.4 Thinking bởi Chat01
Tạo vào: 31 tháng 3, 2026
Trả lời bằng GPT-5.4 Thinking bởi Chat01
Помоги правильно добавить в этот код форматы А3х3 и А3х4.
Все остальное в коде оставить без изменений.
A3x3 (420x891)
A3x4 (420x1189)
Этот код правильно создает листы для форматов А3, А2, А4х3, А4х4, А2х3, А2х4.
Но для форматов А3х3 и А3х4 код не создает листы, а создает только видовые экраны.
Как это исправить?
В моем файле Pdf To DWG.pc3 форматы записаны так:
A4x3 (630.00 x 297.00 мм)
А3x5 (1486.00 x 420.00 мм)
A2x4 (1682.00 x 594.00 мм)
А3х3 (891.00 x 420.00 мм)
A4x4 (841.00 x 297.00 мм)
A2x3 (1261.00 x 594.00 мм)
A0 (1189.00 x 841.00 мм)
A4x5 (1051.00 x 297.00 мм)
A3x4 (1189.00 x 420.00 мм)
Но если запустить команду PdfMediaDiag, форматов А3х3 и А3х4 нет в списке:
UserDefinedMetric (1189.00 x 420.00мм) -> 1189 x 420 мм
UserDefinedMetric (841.00 x 297.00мм) -> 841 x 297 мм
UserDefinedMetric (1189.00 x 841.00мм) -> 1189 x 841 мм
UserDefinedMetric (594.00 x 1261.00мм) -> 1261 x 594 мм
UserDefinedMetric (297.00 x 841.00мм) -> 841 x 297 мм ; А4х4
UserDefinedMetric (297.00 x 420.00мм) -> 420 x 297 мм ; А3
UserDefinedMetric (594.00 x 1682.00мм) -> 1682 x 594 мм
UserDefinedMetric (420.00 x 1486.00мм) -> 1486 x 420 мм
UserDefinedMetric (297.00 x 630.00мм) -> 630 x 297 мм
(defun C:AddLayN2 (/
ActiveDocument
Application
Display
DeleteLayouts
FirstSheet
Flag
Formats
i
j
Layout
Layouts
Layer
ModelSpace
NumberFormats
PaperSpace
Points
MatchSheet
MinPoint
MaxPoint
NoMatchSheet
Object
Point1
Point2
Point1x
Point1y
Point2x
Point2y
Scale
Square
ViewportHight
ViewportWidth
Viewport
X
Y
SideL ; Длинная сторона
SideS ; Короткая сторона
)
(vl-load-com)
(setvar "CTAB" "Model")
(initget 6)
(setq Application (vlax-get-acad-object)
ActiveDocument (vla-get-ActiveDocument Application)
ModelSpace (vla-get-ModelSpace ActiveDocument)
Layouts (vla-get-Layouts ActiveDocument)
Display (vla-get-Display (vla-get-Preferences (vlax-get-acad-object)))
)
(while (null Object)
(setq Object (car (entsel "Укажите объект для определения слоя с рамками")))
)
(setq Layer (cdr (assoc 8 (entget Object)))
Formats (ssget (list (cons 8 Layer)))
NumberFormats (sslength Formats)
Scale (getreal "Масштаб 1:<100>")
i 0
Points ()
)
(if (not Scale) (setq Scale 100))
(repeat NumberFormats (ssname Formats i)
(setq Format (vlax-ename->vla-object (ssname Formats i)))
(if
(and (= (vla-get-ObjectName Format) "AcDbBlockReference") (= (vla-get-IsDynamicBlock Format) :vlax-true))
(progn
(setq Points (append Points (list (GetBoundingBox_dynblock (vlax-vla-object->ename Format))))
i (1+ i))
)
(progn
(vla-GetBoundingBox (vlax-ename->vla-object (ssname Formats i)) 'MinPoint 'MaxPoint)
(setq Points (append Points (list (list (vlax-safearray->list MinPoint) (vlax-safearray->list MaxPoint))))
i (1+ i))
)
)
)
(setq i 0)
(repeat (length Points)
(setq X (append X (list (caar (nth i Points)))))
(setq Y (append Y (list (cadar (nth i Points)))))
(setq i (1+ i))
)
(if
(> (- (MaxElement X) (MinElement X)) (- (MaxElement Y) (MinElement Y)))
(setq Points (vl-sort Points (function (lambda (Points1 Points2) (< (caar Points1) (caar Points2))))))
(setq Points (vl-sort Points (function (lambda (Points1 Points2) (> (cadar Points1) (cadar Points2))))))
)
(if (= (vla-get-LayoutCreateViewport Display) :vlax-true)
(progn (vla-put-LayoutCreateViewport Display :vlax-false) (setq Flag T))
)
(initget 1 "Да Нет")
(setq DeleteLayouts (getkword "Удалить существующие листы? [Да/Нет]: "))
(cond
((= DeleteLayouts "Да")
(vlax-for Layout Layouts (if (/= (vla-get-Name Layout) "Model") (vla-delete Layout)))
(initget 6)
(setq FirstSheet (getint "Начальный номер листа:"))
(vla-put-Name (vla-Item Layouts 1) (itoa FirstSheet))
)
((= DeleteLayouts "Нет")
(while (= NoMatchSheet nil)
(progn
(initget 6)
(setq i 0 FirstSheet (getint "Начальный номер листа:") MatchSheet nil)
(repeat NumberFormats (if (not (null (member (itoa (+ FirstSheet i)) (layoutlist)))) (setq MatchSheet T)) (setq i (1+ i)))
(if (= MatchSheet T) (alert "Совпадение имён листов!") (setq NoMatchSheet T))
)
)
)
)
(setq i 0 j 0)
(repeat NumberFormats
(cond
((= DeleteLayouts "Да")
(if (= i 0)
(progn (setq Layout (vla-item Layouts 0)) (setvar "CTAB" (itoa FirstSheet)))
(progn (setq Layout (vla-Add Layouts (itoa (+ FirstSheet i)))) (setvar "CTAB" (itoa (+ FirstSheet i))))
)
)
((= DeleteLayouts "Нет")
(setq Layout (vla-Add Layouts (itoa (+ FirstSheet i)))) (setvar "CTAB" (itoa (+ FirstSheet i)))
)
)
text(if (= (getvar 'PSLTSCALE) 1) (setvar 'PSLTSCALE 0)) (setq Point1 (car (nth j Points)) Point2 (cadr (nth j Points)) PaperSpace (vla-get-paperspace ActiveDocument) Point1x (car Point1) Point1y (cadr Point1) Point2x (car Point2) Point2y (cadr Point2) ViewportHight (/ (abs (- Point1y Point2y)) Scale) ViewportWidth (/ (abs (- Point1x Point2x)) Scale) Viewport (vla-AddPViewport PaperSpace (vlax-3d-point (list (/ ViewportWidth 2) (/ ViewportHight 2))) ViewportWidth ViewportHight)) (vla-display Viewport :vlax-true) (vla-put-mspace ActiveDocument :vlax-true) (vla-zoomcenter Application (vlax-3d-point (list (/ (+ Point1x Point2x) 2) (/ (+ Point1y Point2y) 2))) 1.0) (vla-put-mspace ActiveDocument :vlax-false) (vla-put-standardscale Viewport acVpCustomScale) (vla-put-CustomScale Viewport (/ (float 1) (float Scale))) (vla-put-DisplayLocked Viewport "-1") (vla-put-StyleSheet Layout "monochrome.ctb") (vla-put-PlotType Layout 5) ;;; --- ВЫБОР ФОРМАТА ПО ГАБАРИТАМ --- (setq SideL (max ViewportWidth ViewportHight) SideS (min ViewportWidth ViewportHight)) (vla-put-ConfigName Layout "DWG To PDF.pc3") (cond ;; A4 (210x297) ((and (<= SideS 215) (<= SideL 302)) (vla-put-CanonicalMediaName Layout "ISO_full_bleed_A4_(210.00_x_297.00_MM)")) ;; A3 (297x420) ((and (<= SideS 302) (<= SideL 425)) (vla-put-CanonicalMediaName Layout "ISO_full_bleed_A3_(420.00_x_297.00_MM)")) ;; A4x3 (297x630) ((and (<= SideS 302) (<= SideL 635)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (297.00 x 630.00мм)")) ;; A2 (420x594) ((and (<= SideS 425) (<= SideL 600)) (vla-put-CanonicalMediaName Layout "ISO_full_bleed_A2_(594.00_x_420.00_MM)")) ;; A4x4 (297x841) ((and (<= SideS 302) (<= SideL 846)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (297.00 x 841.00мм)")) ;; A3x3 (420x891) ((and (<= SideS 425) (<= SideL 896)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (420.00 x 891.00мм)")) ;; A1 (594x841) ((and (<= SideS 600) (<= SideL 846)) (vla-put-CanonicalMediaName Layout "ISO_full_bleed_A1_(841.00_x_594.00_MM)")) ;; А4х5 (297x1051) ((and (<= SideS 302) (<= SideL 1056)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (297.00 x 1051.00мм)")) ;; A3x4 (420x1189) ((and (<= SideS 425) (<= SideL 1195)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (420.00 x 1189.00мм)")) ;; A2x3 (594x1261) ((and (<= SideS 600) (<= SideL 1266)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (594.00 x 1261.00мм)")) ;; A0 (841x1189) ((and (<= SideS 846) (<= SideL 1195)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (1189.00 x 841.00мм)")) ;; A2x4 (594x1682) ((and (<= SideS 600) (<= SideL 1688)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (594.00 x 1682.00мм)")) (t (vla-put-ConfigName Layout "Нет")) ) (if (> ViewportHight ViewportWidth) (vla-put-PlotRotation Layout 1) (vla-put-PlotRotation Layout 0)) (command "_Zoom" "_All") (setq i (1+ i) j (1+ j)) )
(if (= Flag T) (vla-put-LayoutCreateViewport Display :vlax-true))
(setvar "CTAB" "Model")
)
(defun MinElement (X /) (car (vl-sort X '<)))
(defun MaxElement (X /) (car (vl-sort X '>)))
(defun GetBoundingBox_dynblock (ent / lst ins_pt min_point max_point)
(if (and (setq ent (vlax-ename->vla-object ent))
(vlax-property-available-p ent 'isdynamicblock)
(equal (vla-get-isdynamicblock ent) :vlax-true))
(progn
(vlax-for item (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-name ent))
(if (equal (vla-get-visible item) :vlax-true) (setq lst (cons item lst)))
)
(setq ins_pt (vlax-safearray->list (vlax-variant-value (vla-get-insertionpoint ent)))
lst (vl-remove nil (mapcar (function (lambda (x / minp maxp)
(if (not (vl-catch-all-error-p (vl-catch-all-apply (function (lambda () (vla-getboundingbox x 'minp 'maxp))))))
(list (cons "min" (vlax-safearray->list minp)) (cons "max" (vlax-safearray->list maxp)))))) lst))
lst (mapcar (function (lambda (mins) (mapcar (function (lambda (fun) (apply (read mins) (mapcar (function fun)
(mapcar (function (lambda (pts) (cdr (assoc mins pts)))) lst))))) (list car cadr caddr)))) (list "min" "max"))
lst (mapcar (function (lambda (ept) (mapcar (function (lambda (coord_pt coord_line coord_ins)
(+ (* coord_pt ((eval (read (strcat "vla-get-" coord_line "EffectiveScaleFactor"))) ent)) coord_ins)))
ept '("X" "Y" "Z") ins_pt))) lst)
)
)
)
)
Помоги правильно добавить в этот код форматы А3х3 и А3х4.
Все остальное в коде оставить без изменений.
A3x3 (420x891)
A3x4 (420x1189)
Этот код правильно создает листы для форматов А3, А2, А4х3, А4х4, А2х3, А2х4.
Но для форматов А3х3 и А3х4 код не создает листы, а создает только видовые экраны.
Как это исправить?
В моем файле Pdf To DWG.pc3 форматы записаны так:
A4x3 (630.00 x 297.00 мм)
А3x5 (1486.00 x 420.00 мм)
A2x4 (1682.00 x 594.00 мм)
А3х3 (891.00 x 420.00 мм)
A4x4 (841.00 x 297.00 мм)
A2x3 (1261.00 x 594.00 мм)
A0 (1189.00 x 841.00 мм)
A4x5 (1051.00 x 297.00 мм)
A3x4 (1189.00 x 420.00 мм)
Но если запустить команду PdfMediaDiag, форматов А3х3 и А3х4 нет в списке:
UserDefinedMetric (1189.00 x 420.00мм) -> 1189 x 420 мм
UserDefinedMetric (841.00 x 297.00мм) -> 841 x 297 мм
UserDefinedMetric (1189.00 x 841.00мм) -> 1189 x 841 мм
UserDefinedMetric (594.00 x 1261.00мм) -> 1261 x 594 мм
UserDefinedMetric (297.00 x 841.00мм) -> 841 x 297 мм ; А4х4
UserDefinedMetric (297.00 x 420.00мм) -> 420 x 297 мм ; А3
UserDefinedMetric (594.00 x 1682.00мм) -> 1682 x 594 мм
UserDefinedMetric (420.00 x 1486.00мм) -> 1486 x 420 мм
UserDefinedMetric (297.00 x 630.00мм) -> 630 x 297 мм
(defun C:AddLayN2 (/
ActiveDocument
Application
Display
DeleteLayouts
FirstSheet
Flag
Formats
i
j
Layout
Layouts
Layer
ModelSpace
NumberFormats
PaperSpace
Points
MatchSheet
MinPoint
MaxPoint
NoMatchSheet
Object
Point1
Point2
Point1x
Point1y
Point2x
Point2y
Scale
Square
ViewportHight
ViewportWidth
Viewport
X
Y
SideL ; Длинная сторона
SideS ; Короткая сторона
)
(vl-load-com)
(setvar "CTAB" "Model")
(initget 6)
(setq Application (vlax-get-acad-object)
ActiveDocument (vla-get-ActiveDocument Application)
ModelSpace (vla-get-ModelSpace ActiveDocument)
Layouts (vla-get-Layouts ActiveDocument)
Display (vla-get-Display (vla-get-Preferences (vlax-get-acad-object)))
)
(while (null Object)
(setq Object (car (entsel "Укажите объект для определения слоя с рамками")))
)
(setq Layer (cdr (assoc 8 (entget Object)))
Formats (ssget (list (cons 8 Layer)))
NumberFormats (sslength Formats)
Scale (getreal "Масштаб 1:<100>")
i 0
Points ()
)
(if (not Scale) (setq Scale 100))
(repeat NumberFormats (ssname Formats i)
(setq Format (vlax-ename->vla-object (ssname Formats i)))
(if
(and (= (vla-get-ObjectName Format) "AcDbBlockReference") (= (vla-get-IsDynamicBlock Format) :vlax-true))
(progn
(setq Points (append Points (list (GetBoundingBox_dynblock (vlax-vla-object->ename Format))))
i (1+ i))
)
(progn
(vla-GetBoundingBox (vlax-ename->vla-object (ssname Formats i)) 'MinPoint 'MaxPoint)
(setq Points (append Points (list (list (vlax-safearray->list MinPoint) (vlax-safearray->list MaxPoint))))
i (1+ i))
)
)
)
(setq i 0)
(repeat (length Points)
(setq X (append X (list (caar (nth i Points)))))
(setq Y (append Y (list (cadar (nth i Points)))))
(setq i (1+ i))
)
(if
(> (- (MaxElement X) (MinElement X)) (- (MaxElement Y) (MinElement Y)))
(setq Points (vl-sort Points (function (lambda (Points1 Points2) (< (caar Points1) (caar Points2))))))
(setq Points (vl-sort Points (function (lambda (Points1 Points2) (> (cadar Points1) (cadar Points2))))))
)
(if (= (vla-get-LayoutCreateViewport Display) :vlax-true)
(progn (vla-put-LayoutCreateViewport Display :vlax-false) (setq Flag T))
)
(initget 1 "Да Нет")
(setq DeleteLayouts (getkword "Удалить существующие листы? [Да/Нет]: "))
(cond
((= DeleteLayouts "Да")
(vlax-for Layout Layouts (if (/= (vla-get-Name Layout) "Model") (vla-delete Layout)))
(initget 6)
(setq FirstSheet (getint "Начальный номер листа:"))
(vla-put-Name (vla-Item Layouts 1) (itoa FirstSheet))
)
((= DeleteLayouts "Нет")
(while (= NoMatchSheet nil)
(progn
(initget 6)
(setq i 0 FirstSheet (getint "Начальный номер листа:") MatchSheet nil)
(repeat NumberFormats (if (not (null (member (itoa (+ FirstSheet i)) (layoutlist)))) (setq MatchSheet T)) (setq i (1+ i)))
(if (= MatchSheet T) (alert "Совпадение имён листов!") (setq NoMatchSheet T))
)
)
)
)
(setq i 0 j 0)
(repeat NumberFormats
(cond
((= DeleteLayouts "Да")
(if (= i 0)
(progn (setq Layout (vla-item Layouts 0)) (setvar "CTAB" (itoa FirstSheet)))
(progn (setq Layout (vla-Add Layouts (itoa (+ FirstSheet i)))) (setvar "CTAB" (itoa (+ FirstSheet i))))
)
)
((= DeleteLayouts "Нет")
(setq Layout (vla-Add Layouts (itoa (+ FirstSheet i)))) (setvar "CTAB" (itoa (+ FirstSheet i)))
)
)
text(if (= (getvar 'PSLTSCALE) 1) (setvar 'PSLTSCALE 0)) (setq Point1 (car (nth j Points)) Point2 (cadr (nth j Points)) PaperSpace (vla-get-paperspace ActiveDocument) Point1x (car Point1) Point1y (cadr Point1) Point2x (car Point2) Point2y (cadr Point2) ViewportHight (/ (abs (- Point1y Point2y)) Scale) ViewportWidth (/ (abs (- Point1x Point2x)) Scale) Viewport (vla-AddPViewport PaperSpace (vlax-3d-point (list (/ ViewportWidth 2) (/ ViewportHight 2))) ViewportWidth ViewportHight)) (vla-display Viewport :vlax-true) (vla-put-mspace ActiveDocument :vlax-true) (vla-zoomcenter Application (vlax-3d-point (list (/ (+ Point1x Point2x) 2) (/ (+ Point1y Point2y) 2))) 1.0) (vla-put-mspace ActiveDocument :vlax-false) (vla-put-standardscale Viewport acVpCustomScale) (vla-put-CustomScale Viewport (/ (float 1) (float Scale))) (vla-put-DisplayLocked Viewport "-1") (vla-put-StyleSheet Layout "monochrome.ctb") (vla-put-PlotType Layout 5) ;;; --- ВЫБОР ФОРМАТА ПО ГАБАРИТАМ --- (setq SideL (max ViewportWidth ViewportHight) SideS (min ViewportWidth ViewportHight)) (vla-put-ConfigName Layout "DWG To PDF.pc3") (cond ;; A4 (210x297) ((and (<= SideS 215) (<= SideL 302)) (vla-put-CanonicalMediaName Layout "ISO_full_bleed_A4_(210.00_x_297.00_MM)")) ;; A3 (297x420) ((and (<= SideS 302) (<= SideL 425)) (vla-put-CanonicalMediaName Layout "ISO_full_bleed_A3_(420.00_x_297.00_MM)")) ;; A4x3 (297x630) ((and (<= SideS 302) (<= SideL 635)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (297.00 x 630.00мм)")) ;; A2 (420x594) ((and (<= SideS 425) (<= SideL 600)) (vla-put-CanonicalMediaName Layout "ISO_full_bleed_A2_(594.00_x_420.00_MM)")) ;; A4x4 (297x841) ((and (<= SideS 302) (<= SideL 846)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (297.00 x 841.00мм)")) ;; A3x3 (420x891) ((and (<= SideS 425) (<= SideL 896)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (420.00 x 891.00мм)")) ;; A1 (594x841) ((and (<= SideS 600) (<= SideL 846)) (vla-put-CanonicalMediaName Layout "ISO_full_bleed_A1_(841.00_x_594.00_MM)")) ;; А4х5 (297x1051) ((and (<= SideS 302) (<= SideL 1056)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (297.00 x 1051.00мм)")) ;; A3x4 (420x1189) ((and (<= SideS 425) (<= SideL 1195)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (420.00 x 1189.00мм)")) ;; A2x3 (594x1261) ((and (<= SideS 600) (<= SideL 1266)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (594.00 x 1261.00мм)")) ;; A0 (841x1189) ((and (<= SideS 846) (<= SideL 1195)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (1189.00 x 841.00мм)")) ;; A2x4 (594x1682) ((and (<= SideS 600) (<= SideL 1688)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (594.00 x 1682.00мм)")) (t (vla-put-ConfigName Layout "Нет")) ) (if (> ViewportHight ViewportWidth) (vla-put-PlotRotation Layout 1) (vla-put-PlotRotation Layout 0)) (command "_Zoom" "_All") (setq i (1+ i) j (1+ j)) )
(if (= Flag T) (vla-put-LayoutCreateViewport Display :vlax-true))
(setvar "CTAB" "Model")
)
(defun MinElement (X /) (car (vl-sort X '<)))
(defun MaxElement (X /) (car (vl-sort X '>)))
(defun GetBoundingBox_dynblock (ent / lst ins_pt min_point max_point)
(if (and (setq ent (vlax-ename->vla-object ent))
(vlax-property-available-p ent 'isdynamicblock)
(equal (vla-get-isdynamicblock ent) :vlax-true))
(progn
(vlax-for item (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-name ent))
(if (equal (vla-get-visible item) :vlax-true) (setq lst (cons item lst)))
)
(setq ins_pt (vlax-safearray->list (vlax-variant-value (vla-get-insertionpoint ent)))
lst (vl-remove nil (mapcar (function (lambda (x / minp maxp)
(if (not (vl-catch-all-error-p (vl-catch-all-apply (function (lambda () (vla-getboundingbox x 'minp 'maxp))))))
(list (cons "min" (vlax-safearray->list minp)) (cons "max" (vlax-safearray->list maxp)))))) lst))
lst (mapcar (function (lambda (mins) (mapcar (function (lambda (fun) (apply (read mins) (mapcar (function fun)
(mapcar (function (lambda (pts) (cdr (assoc mins pts)))) lst))))) (list car cadr caddr)))) (list "min" "max"))
lst (mapcar (function (lambda (ept) (mapcar (function (lambda (coord_pt coord_line coord_ins)
(+ (* coord_pt ((eval (read (strcat "vla-get-" coord_line "EffectiveScaleFactor"))) ent)) coord_ins)))
ept '("X" "Y" "Z") ins_pt))) lst)
)
)
)
)
Причина здесь в двух местах.
Во-первых, код назначает не тот PC3:
lisp(vla-put-ConfigName Layout "DWG To PDF.pc3")
А ваши размеры A3x3/A3x4 добавлены в Pdf To DWG.pc3. В AutoCAD список доступных форматов берется именно из ConfigName текущего layout, а после смены устройства Autodesk рекомендует обновлять сведения о плоттере через RefreshPlotDeviceInfo. Также список допустимых имен бумаги нужно брать из GetCanonicalMediaNames именно для этого устройства. (Autodesk Help)
Во-вторых, для A3x4 у вас в коде записано не то CanonicalMediaName.
По вашему PdfMediaDiag в списке есть:
textUserDefinedMetric (1189.00 x 420.00мм) -> 1189 x 420 мм
а в коде стоит:
lisp"UserDefinedMetric (420.00 x 1189.00мм)"
Для CanonicalMediaName строка должна совпадать точно с тем, что возвращает AutoCAD для активного PC3. A3x3 у вас вообще не появляется в диагностике, значит сейчас AutoCAD не видит этот формат в активном устройстве, и код его назначить не сможет. (Autodesk Help)
Ниже минимальная правка, без изменения остальной логики.
SideL / SideS замените это:lisp(vla-put-ConfigName Layout "DWG To PDF.pc3")
lisp(vla-put-ConfigName Layout "Pdf To DWG.pc3") (vla-RefreshPlotDeviceInfo Layout)
cond замените ветки A3x3 и A3x4 на такие:lisp;; A3x3 (420x891) ((and (<= SideS 425) (<= SideL 896)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (891.00 x 420.00мм)")) ;; A3x4 (420x1189) ((and (<= SideS 425) (<= SideL 1195)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (1189.00 x 420.00мм)"))
A3x3 заработает только если после назначения Pdf To DWG.pc3 и RefreshPlotDeviceInfo он реально появится в PdfMediaDiag / GetCanonicalMediaNames. Сейчас у вас его нет в списке, значит AutoCAD его не подхватывает. Пользовательские размеры хранятся в PC3 и редактируются через Plotter Configuration Editor, где можно добавлять и изменять user-defined paper sizes. (Autodesk Help)
У вас должно быть так:
Pdf To DWG.pc3.ConfigName вызывается:
lisp(vla-RefreshPlotDeviceInfo Layout)
A3x4 используется точное имя:
lisp"UserDefinedMetric (1189.00 x 420.00мм)"
A3x3 используется точное имя из диагностики. Если после обновления списка оно будет не 891.00 x 420.00мм, а, например, 420.00 x 891.00мм, в код нужно поставить именно ту строку, которую вернет диагностика.Самая вероятная рабочая версия для вас сейчас:
lisp(setq SideL (max ViewportWidth ViewportHight) SideS (min ViewportWidth ViewportHight)) (vla-put-ConfigName Layout "Pdf To DWG.pc3") (vla-RefreshPlotDeviceInfo Layout) (cond ;; A4 (210x297) ((and (<= SideS 215) (<= SideL 302)) (vla-put-CanonicalMediaName Layout "ISO_full_bleed_A4_(210.00_x_297.00_MM)")) ;; A3 (297x420) ((and (<= SideS 302) (<= SideL 425)) (vla-put-CanonicalMediaName Layout "ISO_full_bleed_A3_(420.00_x_297.00_MM)")) ;; A4x3 (297x630) ((and (<= SideS 302) (<= SideL 635)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (297.00 x 630.00мм)")) ;; A2 (420x594) ((and (<= SideS 425) (<= SideL 600)) (vla-put-CanonicalMediaName Layout "ISO_full_bleed_A2_(594.00_x_420.00_MM)")) ;; A4x4 (297x841) ((and (<= SideS 302) (<= SideL 846)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (297.00 x 841.00мм)")) ;; A3x3 (420x891) ((and (<= SideS 425) (<= SideL 896)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (891.00 x 420.00мм)")) ;; A1 (594x841) ((and (<= SideS 600) (<= SideL 846)) (vla-put-CanonicalMediaName Layout "ISO_full_bleed_A1_(841.00_x_594.00_MM)")) ;; А4х5 (297x1051) ((and (<= SideS 302) (<= SideL 1056)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (297.00 x 1051.00мм)")) ;; A3x4 (420x1189) ((and (<= SideS 425) (<= SideL 1195)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (1189.00 x 420.00мм)")) ;; A2x3 (594x1261) ((and (<= SideS 600) (<= SideL 1266)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (594.00 x 1261.00мм)")) ;; A0 (841x1189) ((and (<= SideS 846) (<= SideL 1195)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (1189.00 x 841.00мм)")) ;; A2x4 (594x1682) ((and (<= SideS 600) (<= SideL 1688)) (vla-put-CanonicalMediaName Layout "UserDefinedMetric (594.00 x 1682.00мм)")) (t (vla-put-ConfigName Layout "Нет")) )
Если хотите, я могу сразу дать вам еще и маленькую диагностическую LISP-функцию, которая покажет точные CanonicalMediaName для Pdf To DWG.pc3, чтобы без угадывания добить A3x3.