Chuyển đến nội dung
Diễn đàn CADViet

ui_troi_2005

Thành viên
  • Số lượng nội dung

    47
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi ui_troi_2005


  1. Cách này bạn thử xem : khi mở bản vẽ ra 3D, gõ lệnh STARTUP - nhập 1 - File - new - chon Mẻtic - OK

     

    Của bác chỉ là thiết lập cách lựa chọn thôi, ko phải là theo tiêu đề, mỗi lần mở cad là lại phải làm như vậy thì mệt lắm mà ở đây công cụ New vẫn bình thường, chỉ là công cụ QNEW thôi, mặc định ban đầu khi khởi động cad


  2. Chào các bác, em đã có cách mới lấy lại bản vẽ 2D khi khởi động lên một cách nhanh chóng và hay hơn

    - gõ lệnh optiops (op) lên bảng options sau đó chọn thẻ file, chọn tiếp Template Settings, tiếp tục Default Template file name for QNEW, click đúp vào dòng

    " c:\documents and settings\pham quang long\local settings\application data\autodesk\autocad 2007\r17.0\enu\template\acad.dwt " ở bên dưới và chọn acad.dwt rồi Apply/ok tắt cad và mở lại--> ngon ngay thôi mà


  3. Tôi đánh lệnh fakedim làm theo những bước của bác Hoành mà nó lại thông báo lỗi : "bad argument type: stringp nil"! xin nhờ giúp đỡ. Tôi đang xài Autocad 2008. Thanks!

     

    Command: APPLOAD fakedim(3).vlx successfully loaded.

    Command:

    Type fakedim to start!

    Command:

    Command: fakedim

    Fakedim © CADViet.com 2007

    Select objects: Specify opposite corner: 221 found

     

    Select objects:

    bad argument type: stringp nil

     

    bạn appload kiểu jì, mọi người làm vẫn được mà .

    nếu bạn chỉ load ko thì chỉ dùng được 1 lân thôi, nếu muốn dùng lâu dài thì dùng contents.. mà load


  4. Ok, Đáp án là thế này, không phải -h mà cũng chảng phải solid

    Nhưng mình cũng không ngờ lại có nhìu lời giải đến vậy đấy

     

    pline>

    Pick chọn điểm đầu

    W

    1000

    1000

    kéo chuột theo phương y nhập giá trị =1 enter

    kéo chuột theo phương x nhập giá trị =1 enter

     

    Ok, có kết quả

     

    Chúc vui

     

    Bác gõ lệnh T

    Chọn font Webdings

    gõ gấu chấm

    --> Song

    • Vote tăng 1

  5. Tôi đã nhiều năm cầm chuột mà đến hôm qua mới biết 1 mẹo rất nhỏ, mà hay!

    -Kích vào đối tượng, kích thêm 1 cái sao cho dâu vuông ĐỎ xuất hiện, để chuột vào đó, ta có thể move đối tượng, spase cái nữa sẽ là quay, spase phát nữa là copy............

    http://www.cadviet.com/upfiles/haha.jpg

    đỡ phải dùng lệnh.

    Các bạn chắc biết cái này rồi! ôi! Tôi Gà quá!

     

    Chào bác

     

    em dùng cad 2007

    Khi click vào đối tượng line, circle,...click tiếp vào ô màu xanh hiện lên, ấn space lần 1 sẽ ra lệnh move, space lần 2 sẽ cho lệnh rotate, lần 3 sẽ cho lệnh scale với tâm là điểm mà ta chọn, chỉ có 3 lệnh đó và ấn tiếp nó sẽ xoay vòng ngược lại 3 lệng đó, ko có lệnh coppy ko bít bác dùng cad bao nhiêu?

     

    Đặc biệt nếu click lần 2 mà vào ô vuông màu xanh là tâm của đối tượng thì nó cho ra lệnh move luôn

    nếu click lần 2 vào ô vuông màu xanh khác thì đối với line thì nó sẽ là lệnh extend với điểm ta click là điểm cuối và các loại đường khác cũng gần tương tự

    • Vote tăng 1

  6. Với một khô tàng lớn về câu đố, Tui cũng xin đóng góp 4 câu hỏi vừa mang tính chất thư giãn nhưng cũng phải suy nghĩ đó nha.

    Câu 1. Có một cái cột cao 10m. Một con sên bò từ chân cột lên đỉnh cột. Ban ngày con sên bò được 5m, ban đêm ngủ quên bị tụt xuống 4m. Hỏi sau bao lâu thì con sên bò lên đỉnh cột.

    Câu 2. Có 6 chiếc đũa bằng nhau, làm sao xếp thành 4 hình tam giác đều (Không bẻ đũa, không chẻ đũa)

    Câu 3. Có 100 chiếc bánh Trung thu được xếp thành 10 hàng mỗi hàng 10 chiếc. Có 9 hàng (gồn 90 chiếc) có khối lượng 10 kg/1hàng (1chiếc 1kg) là bánh đạt tiêu chuẩn. 1 hàng có khối lượng 9kg( 1 chiếc nặng 0,9kg) là bánh không đạt tiêu chuẩn.

    Chỉ với 1 phép cân (Bạn có thể tuỳ ý lựa chọn bất kỳ cái cân nào có trên thị trường) ban hãy xác định hàng bánh không đạt tiêu chuẩn.

    Ai có câu trả lời post lên ngay cho cả nhà xem nhé.

    Chúc các bạn có thể thành công với 3 câu đố này. :mellow:

     

     

    Chào bác sao không thấy bác trả lời vậy?

     

    Cho em thắc mắc chút "1 phép cân" ở đây là một lần cân or 1 kiểu cân hay thế nào?

    em cứ suy nghĩ theo ý 1 lân cân nên ko tìm ra đc???????

     

    Nhân đây em có bài đố luôn..

    Có 9 cái bánh bít rằng trong 9 cái có 1 cái có khối lượng nhỏ hơn cả, các bánh khác đều có klượng bằng nhau

    hỏi dùng loại cân nào để cho số lần cân là ít nhất và ít nhất đó là mấy lần???????????????????????? :mellow:


  7. Vấn đề này có lẽ chúng ta nên tạm gác sang 1 bên các Bác ah.

    Em thấy tranh luận hơi khốc liệt rùi :mellow:

    Và em sẽ chẳng chịu thua ai, vì đó là những gì em đã đc đọc, đc học.

     

    Em có 1 câu đố siêu tập đc, thách đố mọi người

     

    http://www.cadviet.com/upfiles/1_34.jpg

     

    Tìm hình thích hợp trong dấu ? và giải thích cụ thể

     

    Chán các bác quá.

    Em xin lỗi vì đã dở lại truyện cũ của hai bác. Nhưng em thấy vấn đề chưa đc giải quyết nên em xin phéptham gia.

    Các bác nên đọc lại kỹ tất cả bài này

    http://vi.wikipedia.org/wiki/Hai_B%C3%A0_Tr%C6%B0ng

     

    Từ đầu đến cuối luôn luôn nhắc đến Mê Linh và Chu diêm là Huyện các bác xem phần chú giải đi

    Nếu vẫn ko tin tưởng vào Wikipedia thì các bác cũng phải tin vào bài thơ chứ, (theo em đc biết thì ể tưởng nhớ 2 bà Trưng nên nhân dân thời đó đã sáng tác và đc truyền miệng cho đến bây giờ) cái đoạn

    "Đô Kỳ đóng cõi Mê Linh"

    Ko lẽ cõi Mê Linh ở đây là người

     

    Rõ ràng như vậy mà cũng...

    kòn bác 'ph168xd' nếu mà bảo thủ quá thì em cũng chịu thôi. :mellow:


  8. Có lẽ bạn chưa hiểu câu hỏi của mình ? Ví dụ mình vẽ mặt bằng một căn nhà ABCD có các cạnh như sau : AB= 19,5m; BC=9,5m; CD=20m và AD=7,5m. Trong đó có góc được tạo thành bởi 2 cạnh CD và AD = 90 độ (góc D). Trong bản vẽ này nếu có số đo các góc A;B;C thì dễ thực hiện nhưng khi đo MB căn nhà thì làm gì có số đo góc. Mình vẽ cạnh AD trước rồi liền theo CD đến BC, sau đó quay lại vẽ cạnh AB. Tuy nhiên, để có 2 điểm B của 2 cạnh AB và BC trùng nhau là rất khó , nếu move 2 đầu đó gặp nhau thì có thể nhưng số đo thay đổi là vậy,không thể vẽ được. Mình nghĩ chắc Autocad có thể vẽ được . Mong các bạn hướng dẫn giúp, cám ơn trước.

     

    Chào bạn.

    mình biết đây là bài toán dựng hình đơn giản nhưng bạn nói đến lệnh "move 2 đầu thì kthước bị thay đổi" mình không hiểu nhưng theo mình nghĩ thì bạn đã dùng chuột kéo lần lượt 2 đầu chứ đó ko phải là lệnh move.

    khi sử dụng lệnh move thì kthước và góc hoàn toàn ko bị thay đổi, nó chỉ là di chuyển vị trí thôi về hình dạng...ko thay đổi.

     

    Chúc bạn vui.


  9. SSg sửa lại lệnh LL : đo và ghi chiều dài nhiều đối tượng, bỡi vì anh em địa chính sẽ rất cần cái này để ghi kích thước cạnh thửa đất, mà lệnh LL của SSG cho ra kết quả không thuộc "qui phạm", đặt biệt nếu thửa đất tạo bằng polyline kín thì nó cho kết quả chu vi chứ không phải từng cạnh.

    Đây là file tham khảo

    http://www.cadviet.com/upfiles/kichthuocthuadat.dwg

    Mong hối âm của SSg. Thanks!

     

    Chào bác SSG.

     

    Lệnh SCC đó sau khi sử dụng nó không thể edit size kthước đc. mong bác sửa lại hiện tại em sủa nó phải xoá đi rồi trả lại kthước cũ rồi mới thay đổi size đc..

     

    Chúc bác và anh em trong diễn đàn luôn vui.


  10. Chào bạn Ui_troi_2005,

    Bạn xài thử thằng này coi sao:

    (DEFUN EXCUTE(/ n P TX TY)
    (setq str (strcat "\nPhan so le muon lay [" (itoa sl) "] (press Enter or Space for get default): "))
    (setq n (getint str))
    (if (/= n Nil)
    (setq sl n)
    )
    (setq oldmode (getvar "pdmode"))
    (setq P Null)
    (setq p1 (getpoint "\n Pick a point for base point"))
    (setq h (getreal "\n Type the text height : "))
    (setq oldort (getvar "orthomode"))
    (setvar "orthomode" 1)
    )
    (defun getord ()
    (princ "\nPick a point or press ESC for exit:")
    (setq P (getpoint))
    (if (/= P Nil)
    (progn
    (setvar "pdmode" 3)
    (setq TX (rtos (- (Car P) (car p1)) 2 sl))
    (setq TY (rtos (- (Cadr P) (cadr p1)) 2 sl))
    (setq ix (rtos (/ (- (car p) (car p1)) 25.4) 2 sl))
    (setq iy (rtos (/ (- (cadr p) (cadr p1)) 25.4) 2 sl))
    (command "point" p )
    (setq p2 (getpoint p "\n Chon diem dat toa do X ")
      p3 (getpoint p "\n Chon diem dat toa do Y ")
    )
    (command "text" p3 h 90 (strcat iy " [" ty "]"))
    (Command "line" p p3 "")
    (command "text" p2 h 0 (strcat ix " [" tx "]"))
    (command "line" p p2 "")
    )
    )
    (setq ans (getstring "\n Do you want to continue ?"))
    )
    (DEFUN INIT()
    (if (= sl Nil)
    (setq sl 2)
    )
    )
    (defun check (/ans)
    (if (= ans "y")
    (getord)
    )
    )
    (DEFUN C:TOADO()
    (INIT)
    (EXCUTE)
    (getord)
    (while (= ans "y")
    (check ans)
    )
    (setvar "pdmode" oldmode)
    (setvar "orthomode" oldort)
    )

     

    Hy vọng bạn hài lòng.

     

    Thật tuyệt vời bác Phanthanhbinh ơi.

    cảm ơn bác nhiều lắm cơ, phiền bác chỉnh giúp em cái đường ghi nó đúng giữa chữ

     

    phen này em xin làm đệ bác mong bác thu nhận

    nick em là ui_troi_2005, khi nào có dịp mong bác chỉ bảo cho em chút kiến thức

     

    Rất hân hạnh được biết bác.


  11. 1- Vài tiện ích nhỏ, hy vọng có ích cho một số bạn thường phải xử lý Dim và Measure:

     

    ;;;=================================
    ;;;SMALL UTILITIES FOR DIMENSIONS AND MEASUREMENTS
    ;;;CAC TIEN ICH NHO VE KICH THUOC VA DO LUONG
    ;;;=================================
    ;;;HUONG DAN:
    ;;;SaveAs *.lsp, go lenh Appload, go cac lenh sau day de chay:
    ;;;-------------------------------------------------------------
    ;;;1- Lenh SCC: SCale with Constant dimensions
    ;;;Hoat dong nhu lenh Scale cua AutoCAD nhung giu nguyen gia tri Dim
    ;;;(chi co "Dim Scale Linear" va "Dim Scale Overall" thay doi)
    ;;;Cac thuoc tinh khac cua Dim khong bi anh huong
    ;;;Tuy chon Dim Scale Overall = Y cho phep scale ca cac yeu to khac cua Dim
    ;;;(text, kich thuoc mui ten, khoang nho ra cua duong giong...)
    ;;;Mac dinh la Dim Scale Overall = N
    ;;;Chap nhan cac Dim co DimStyle khac nhau
    ;;;-------------------------------------------------------------
    ;;;2- Lenh CHD: CHeck Dimensions
    ;;;Kiem tra toan bo cac doi tuong Dimensions co trong ban ve
    ;;;Dim bi edit bang Text Override se chuyen sang layer DimCheck co mau RED
    ;;;-------------------------------------------------------------
    ;;;3- Lenh XY: ghi toa do X, Y cua diem pick
    ;;;Ket qua ghi dang Leader va 1 Mtext co 2 dong
    ;;;-------------------------------------------------------------
    ;;;4- Lenh CL: ve Center Line cho duong tron tai layer CEN
    ;;;Neu Layer khong ton tai, chuong trinh tu tao layer CEN
    ;;;Voi thiet lap mau Magenta, Ltype ACAD_ISO04W100
    ;;;-------------------------------------------------------------
    ;;;5- Lenh L1: Do va ghi chieu dai 1 doi tuong, vi tri dat text do user chon
    ;;;-------------------------------------------------------------
    ;;;6- Lenh LL: Do va ghi chieu dai nhieu doi tuong, cho phep chon hang loat
    ;;;Vi tri dat text tai diem giua cua tung doi tuong
    ;;;-------------------------------------------------------------
    ;;;7- Lenh LTO: Do va ghi tong chieu dai nhieu doi tuong, user chon vi tri dat text
    ;;;-------------------------------------------------------------
    ;;;GHI CHU CHUNG VOI KET QUA GHI DANG TEXT
    ;;;Chuong trinh dung TextStyle hien hanh de ghi ket qua
    ;;;So chu so thap phan phu thuoc thiet lap Units
    ;;;Vao Format -> Units -> chon Precision tuy y
    ;;;-------------------------------------------------------------
    ;;;Copyright by ssg - www.cadviet.com - March 2009
    ;;;=================================
    ;;;PUBLIC FUNCTIONS
    ;;;=================================
    (defun getL(e) ;;;Get Length of curve e
    (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))
    )
    ;;;-------------------------------------------------------------
    (defun wtxt (txt p / sty d h) ;;;Write txt on graphic screen, defaul setting
    (setq
       sty (getvar "textstyle")
       d (tblsearch "style" sty)
       h (cdr (assoc 40 d))
    )
    (if (= h 0) (setq h (cdr (assoc 42 d))))
    (entmake
       (list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 40 h) (assoc 41 d))
    )
    )
    ;;;-------------------------------------------------------------
    (defun ss2ent (ss / i Le e) ;;;Convert ss to list of ename
    (setq i 0 Le nil)
    (repeat (sslength ss) 
       (setq
           e (ssname ss i)
           Le (append Le (list e))
           i (1+ i)
       )
    )
    Le
    )
    ;;;-------------------------------------------------------------
    (Defun Bdraw()
    ;;;Begin draw, get some current system variables, disable them
    (setq OldOs (getvar "osmode"))
    (setq OldLay (getvar "clayer"))
    (setvar "osmode" 0)
    )
    ;;;-------------------------------------------------------------
    (Defun Edraw()
    ;;;End draw, reset all system variables
    (setvar "osmode" OldOs)
    (setvar "clayer" OldLay)
    )
    ;;;-------------------------------------------------------------
    (Defun SetLayer(MyLayer)
    ;;;Make and Set Layer 
    (if (not (tblsearch "LAYER" MyLayer)) (progn
    (Cond
    ((= (strcase MyLayer) "0") (setq MyColor "White" MyLtype "Continuous"))
    ((= (strcase MyLayer) "CEN") (setq MyColor "Magenta" MyLtype "ACAD_ISO04W100"))
    ((= (strcase MyLayer) "DIM") (setq MyColor "Green" MyLtype "Continuous"))
    ((= (strcase MyLayer) "HATCH") (setq MyColor "Yellow" MyLtype "Continuous"))
    ((= (strcase MyLayer) "HID") (setq MyColor "Cyan" MyLtype "ACAD_ISO02W100"))
    ((= (strcase MyLayer) "STT") (setq MyColor 140 MyLtype "Continuous"))
    ((= (strcase MyLayer) "KHUNGTEN") (setq MyColor 120 MyLtype "Continuous"))
    )
    (Command "Layer" "N" MyLayer "L" MyLtype MyLayer "C" MyColor MyLayer "T" MyLayer "")
    ))
    (setvar "CLayer" MyLayer)
    )
    ;;;=================================
    ;;;DIMENSION AND GEOMETRIC COMMAND FUNCTIONS
    ;;;=================================
    (defun SCDim( / e ob OName SF LSF)
    (while (setq e (ssname ssd 0))
     (setq
       ob (vlax-ename->vla-object e)
       OName (vla-get-ObjectName ob)
       SF (vla-get-ScaleFactor ob)
     )
     (if (not (wcmatch OName "*AngularDimension"))
       (progn
         (setq LSF (vla-get-LinearScaleFactor ob))
         (command "dimoverride" "dimlfac" (/ LSF k) "" e "")
       )
     )
     (if (/= opt "N") (command "dimoverride" "dimscale" (* SF k) "" e ""))
     (ssdel e ssd)
    )
    )
    ;;;-------------------------------------------------------------
    (defun C:SCC( / ss ssd p k opt) ;;;SCale with Constant dimensions
    (vl-load-com)
    (setq
     ss (ssget)
     ssd (ssget "p" '((0 . "DIMENSION")))
     p (getpoint "\nBase point:")
     k (getreal "\nScale Factor:")
     opt (strcase (getstring "\nDim scale overall? [Yes/No] :"))
    )
    (if (= opt "") (setq opt "N"))
    (if (> k 1)
     (progn (command "scale" ss "" p k) (SCDim))
     (progn (SCDim) (command "scale" ss "" p k))
    )
    (princ)
    )
    ;;;=================================
    (defun C:CHD( / ss e txt n) ;;;CHeck Dimensions
    (setq ss (ssget "X" '((0 . "DIMENSION"))))
    (setq n 0)
    (if (not (tblsearch "layer" "DimCheck"))
     (command "Layer" "N" "DimCheck" "C" "Red" "DimCheck" "")
    )
    (while (setq e (ssname ss 0))
     (setq txt (cdr (assoc 1 (entget e))))
     (if (not (or (= txt "") (vl-string-search "<>" txt))) (progn
       (command "change" e "" "p" "LA" "DimCheck" "")
       (setq n (1+ n))
     ))
     (ssdel e ss)
    )
    (if (= n 0) (setq S "Ket qua check: OK")
     (setq S (strcat "Co " (itoa n) " Dimensions bi sua Text Override"
              "\nDa duoc chuyen sang layer DimCheck co mau RED!")
     )
    )
    (alert S)
    (princ)
    )
    ;;;=================================
    (defun C:XY( / p1 p2)
    (setq
        p1 (getpoint "\nFirst point:")
        p2 (getpoint p1 "\nNext point:")
    )
    (setvar "dimtad" 1)
    (command "leader" p1 p2 "a" (strcat "X=" (rtos (car p1)) "\\PY=" (rtos (cadr p1))) "")
    (princ)
    )
    ;;;=================================
    (defun C:CL(/ p r p1 p2 p3 p4 oldos oldlay) ;;;Center Line duong tron
    (setq
       p (getpoint "\nCenter point:")
       oldOrtho (getvar "orthomode")
    )
    (setvar "orthomode" 1)
    (setq r (getdist p "\nEnd point: "))
    (Bdraw)
    (SetLayer "CEN")
    (command "line" (polar p pi r) (polar p 0 r) "")
    (command "line" (polar p (/ pi 2) r) (polar p (/ pi -2) r) "")
    (setvar "orthomode" oldOrtho)
    (Edraw)
    (princ)
    )
    ;;;=================================
    (defun C:L1( / e L) ;;;Do va ghi chieu dai 1 doi tuong
    (setq  e (car (entsel "\nSelect object:")))
    (command "lengthen" e "")
    (setq L (getvar "perimeter"))
    (wtxt (strcat "L= " (rtos L)) (getpoint "\nPosition of text:"))
    )
    ;;;=================================
    (defun Measure1(e / L p)
    (vl-load-com)
    (setq
       L (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))
       p (vlax-curve-getPointAtDist e (/ L 2)) 
    )
    (wtxt (strcat "L= " (rtos L)) p)
    )
    ;;;-------------------------------------------------------------
    (defun C:LL( / ss e) ;;;Do chieu dai nhieu doi tuong, cho phep chon hang loat
    ;;;Ket qua ghi tai diem giua cua tung doi tuong
    (setq ss (ssget '((0 . "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE"))))
    (while (setq e (ssname ss 0))
       (measure1 e)
       (ssdel e ss)
    )
    )
    ;;;=================================
    (defun C:LTO( / ss Le L e L1) ;;;Do va ghi tong chieu dai nhieu doi tuong
    (setq
       ss (ssget '((0 . "LINE,LWPOLYLINE,SPLINE,ARC,CIRCLE,ELLIPSE")))
       Le (ss2ent ss)
       L 0
    )
    (foreach e Le (setq L (+ L (getL e))))
    (wtxt (strcat "Lt= " (rtos L)) (getpoint "\nPosition of text:"))
    )
    ;;;=================================
    

     

    2- Có vấn đề gì về sử dụng, các bạn phản hồi để ssg sửa

     

    3- Cần bổ sung thêm những tiện ích gì thuộc dạng này không?

     

    Chào bác SSQ.

     

    các lisp bác đưa lên thật tuyệt vời, em cảm ơn bác nhiều lắm.

    nhưng em có một thắc mắc nhỏ là cái lệnh LTO đó nó luông luôn tính tổng ở tỉ lệ 1:1, nếu bản vẽ vẽ ở tỉ lệ khác thì nó ko theo tỉ lệ đó, trong khi đó các kthước đo ở tỉ lệ đó vànhư vậy có mâu thuẫn giữa kthước và tổng kthước, mong bác xem lại và có thể cho bản tính tỏng đó hoànthiện hơn.

     

    Rất cảm ơn bác.


  12. Chào bạn Ui_trơi_2005,

    Dựa trên cái hình bạn post lên, mình làm thử cái lisp này dựa trên cái lisp bạn đã post. Quả thực như bác Tue_NV đã nói, bạn trình bày vấn đề hơi sơ sài quá nên mình phải tự đoán mò mà viết. Chỗ nào chưa đúng ý bạn thì bạn hỏi lại nhé. Đây là mình mới thử xem đã đúng yêu cầu của bạn hay chưa. Nếu đúng phần nào thì mình sẽ cải thiện tiếp sau:

     

    Về cái lisp bạn post lên, không hiểu do bạn tự viết hay của người khác viết. Mình thực sự thấy nó hơi lộn xộn. Mình xin góp ý các lỗi cơ bản như sau:

    1/- cái hàm (while T ......) thực sự là một cái hàm vô nghĩa và nó sẽ hoặc là làm cho hàm không chạy, hoặc là làm nó chạy tít mù không có điểm dừng bạn ạ.

    2/- Hàm lệnh (command "insert" ...... ) dùng để đưa một block có sẵn vào trong bản vẽ chứ đâu có dùng để nhập text được. Nếu bạn định dùng hàm này thì tất yếu trong cad của bạn phải có sẵn cái block mang tên là TD. khi đó ban sử dụng hai biến tx và ty để làm gì nhỉ???

     

    Túm lại bạn cần tìm hiểu kỹ thêm thì mới có thể tự hiệu chỉnh các lisp có sẵn theo ý mình sử dụng được bạn ạ.

     

    Về cái lisp của mình viết, hiện tại do chưa hiểu cái cách bạn sử dụng các le hoặc line nên mình tạm thời cố định các điểm đặt text theo tọa độ điểm chọn. Nếu bạn muốn điểm đặt này tùy ý bạn thì thay các điểm đặt này bằng hàm getpoint. Nếu bạn muốn các điểm đặt tuân theo một quy luật nào đó thì bạn phải nói rõ cái quy luật ấy mới có thể viết lisp được.

    Cái lisp này mới cho bạn ghi tọa độ cho một điểm mỗi lần chạy. Nếu bạn muốn một lần chạy ghi được nhiều điểm thì mình có thể cải tiến thêm cho bạn nhưng bạn phải nói rõ cách thức chọn là chọn một tập hợp điểm rồi ghi kích thước một lần hay mỗi lần chọn một điểm thì ghi kich thước luôn cho điểm đo. Theo mình thì cách sau sẽ đễ viết lisp hơn.

    Về các kích thước khác như kích thước đường kính, bán kính, kích thước thẳng, .... bạn cũng nên nói rõ cách bạn cần thể hiện thì mới có thể xác định cách viết lisp cho bạn được

    Nhìn chung yêu cầu của bạn không quá khó nhưng khó ở chỗ bạn chưa tự sửa lisp theo ý mình được nên bạn cần trình bày càng chi tiết càng thuận lợi cho người viết lisp và bạn cũng dễ dàng khi sử dụng, không gặp phải những lỗi ngớ ngẩn do người viết lisp chưa hiểu đúng ý bạn.

    Chả ai muốn cái lisp của mình lại mang lại sự khó chịu cho người sử dụng cả bạn ạ, nên bạn hãy cố gắng bạn nhé. Nếu có thể bạn post cả cái bản vẽ ban đầu và cái bản vẽ kết quả mà bạn muốn có thì sẽ tốt hơn nhiều là việc chỉ dùng lời mô tả bạn ạ.

     

    Chúc bạn luôn vui và hạnh phúc với những điều bạn có.

     

    Chào bác 'phamthanhbinh' .

    Rất cảm ơn bác đã nói rõ những thiếu sót của em, thực ra em cũng chưa biết nhiều về lisp nên hỏi mà cũng lơ tơ mơ.

    em đã up lên bản vẽ hoàn chỉnh đó rồi bác ạ. tuy nhiên do bất cẩn nên nó đã bị scale tỉ lệ 1/2, bác có thể SC lại với tỉ lệ là 2 là ok.

    Ở đây em muốn ghi toạ độ X,Y.

    - thứ nhất chọn độ chính xác sau dấu phảy bao nhiêu số(như lisp trên là ok)

    - thứ hai chọn toạ độ gốc

    - thứ ba chọn điểm cần ghi toạ độ

    - thứ tư chọn vị trí đặt X dùng đường line để dóng từ điểm cần ghi toạ độ tới vị trí đặt gía trị toạ độ(dạng như khi vẽ lệnh LE)

    - thứ năm chọn vị trí đặt Y dùng đường line để dóng từ điểm cần ghi toạ độ tới vị trí ghi toạ độ(dạng như khi vẽ lệnh LE)

    chú ý: X,Y luôn vuông góc và X nằm ngang, Y nằm đứng

    - enter tiếp thì tiếp tục bắt đầu từ thứ 2 (ko cần thứ nhất) và ghi xong các toạ độ này lại chuyển qua toạ độ thứ 3 cứ như vậy...

     

    Đây chỉ là ý kiến của em, bác có cách nào hay hơn em sẵn lòng nghe bác chỉ bảo, mục đích của em là ghi đc toạ độ.

     

    Rất cảm ơn bác, chúc bác luôn vui vẻ.


  13. Chào bạn UiTroi

    Cái toạ độ của bạn nói tới là toạ độ X hay toạ độ Y so với toạ độ gốc chuẩn tương đối trong hình vẽ vậy bạn?

    Sao mà đo trong bản vẽ không thấy khớp với nhau tí nào?

    Bạn nói cái trước là inch, sau trong ngoặc là mét nhưng cùng 1 vị trí lại thấy có một đường đứng ghi toạ độ, lại có một đường ngang ghi toạ độ là sao không hiểu?

    Bạn hãy giải thích kỹ nhé, và không nên để người khác hỏi nhiều 1 vấn đề mất thời gian lắm.

    Upfile cho bạn xem đây, những đường màu đỏ là không hiểu.Gui File

    Chúc bạn vui

     

    Chào bác 'Tue_NV'.

    Cái toạ độ em nói tới là cả X,Y xác định toạ độ phải có X,Y chớ bác. Em đã xem lại trong bản vẽ đó đã bị Scale 1/2 lần nên nó ko đúng nữa cái đó có lẽ do em ko cẩn thận, xin lỗi bác. Tại cùng một điểm có hai toạ độ X,Y chữ nằm đứng là X, chữ nằm ngang là Y. Có lẽ cái này bác cứ tính điểm chuẩn là 0,0 là ra, mà có lẽ mấycái này tự suy luận ra hết ấy mà. mà em đã trình bày kiểu lisp em muốn nhờ các bác, bác thấy kiểu gì hay thì bác chỉnh lại theo ý bác, đâu nhất thiết phải là theo ý em đưa ra, bác cứ thấy làm như thế nào là tốt và hay cho mọi nguời cùng dùng ấy là đc, bác chỉ cần chỉ ra cho em đc cái toạ độ X,Y còn về mặt thẩm mỹ gì gì đó thì bác chỉ nên tham khảo ý kiến em đưa ra thôi, ví dụ như bản vẽ em đáng ra X là phải nằm ngang, Y là phải nằm dọc nhưng nó lại nguợc đời như thế, cái đó bác nên sủa cho em, em xin cảm ơn. Một ý kiến hay chả ai dám bác bỏ đây bác ạ.

    Mong bác giúp đỡ.

    Chúc bác mọi điều tốt đẹp.


  14. Bạn dùng tạm lisp này xem thử có ổn không.

    Lưu ý: mỗi lần chạy lệnh SCC, các đối tượng được chọn phải có cùng 1 kiểu dimstyle

     

    ;;;-------------------------------------------------------------
    (defun ss2ent (ss / i Le e);;;Convert ss to list of ename
    (setq i 0 Le nil)
    (repeat (sslength ss)
    (setq
    e (ssname ss i)
    Le (append Le (list e))
    i (1+ i)
    )
    )
    Le
    )
    ;;;-------------------------------------------------------------
    (defun upd_dim( ssd)
    (setq
       e (ssname ssd 0)
       d (entget e)
       dtype (cdr (assoc 3 d))
       dt (tblsearch "dimstyle" dtype)
       k0 (cdr (assoc 144 dt))
       ks (cdr (assoc 40 dt))
       newdtype (strcat dtype "x" (rtos k))
    )
    (command "dimstyle" "r" dtype)
    (setvar "dimlfac" (/ k0 k))
    (setvar "dimscale" (* ks k))
    (if (tblsearch "dimstyle" newdtype)
       (command "dimstyle" "r" newdtype)
       (command "dimstyle" "s" newdtype)
    )
    (command "dimstyle" "a" ssd "")
    )
    ;;;-------------------------------------------------------------
    (defun C:SCC( / ss ssd L p k ks e d dtype dt k0 newdtype)
    (setq
       ss (ssget)
       ssd (ssget "p" '((0 . "DIMENSION")))
       L (ss2ent ss)
       p (getpoint "\nDiem chuan:")
       k (getreal "\nScale factor:")
    )
    (if (> k 1)
       (progn (command "scale" ss "" p k) (if ssd (upd_dim ssd)))
       (progn (if ssd (upd_dim ssd)) (command "scale" ss "" p k))
    )
    (princ)
    )
    ;;;-------------------------------------------------------------
    

     

    Chào bác SSG.

    Em cảm ơn bác đã giúp em, cái lisp rất hay, nó đã scc đúng tất cả như em muốn. Nhưng đúng như lời bác nói nó ko thể làm tốt khi bản vẽ có nhiều Dimension style, có lẽ lần sau em sẽ hạn chế các Dimension style.

     

    Rất cảm ơn bác.

     

    Chúc bác luôn luôn vui vẻ với những gì đã chia sẻ với mọi người.


  15. Chào bạn.

    Ý thứ nhất là đã có nhắc đến phần thập phân trong Lisp (ở hàm (rtos X 2 0) trong đó 0 là số số lẻ thập phân cần lấy bạn ạ. Vì số lẻ ở tọa độ là 0, số số lẻ của chu vi, diện tích là 2 nên sử dụng hàm rtos để lấy số lẻ thập phân bạn à.

    thứ 2, thứ 3 , thứ 4 : có lẻ bạn chưa đọc bản vẽ của bạn doanvinh_hai@yahoo.com. Bản vẽ của bạn ấy yêu cầu lập thành bảng.

     

    Còn bản vẽ của bạn mình đã xem qua. Và bạn hãy rút kinh nghiệm hãy trình bày thật rõ ràng, chi tiết điều mà bạn muốn. Có chổ đọc không hiểu như hình tròn thứ 4 từ trái qua phải có ghi 6.02[152.91] đứng và -0.45[-11.43] ngang là không hiểu.

     

    Em xin chào bác 'Tue_NV' đã phản hồi lại cho em.

     

    Thực ra tất cả cáii đó là toạ độ bác ạ, cái trước là inch, sau trong ngoặc là mét, tất cả đều vậy. Cái đó do công việc bên em, nếu bác giúp được cả hai loại KThước mét và inch đó thì em rất rất cẳm ơn.

    Về phần thứ nhất em nói trên đó không phải là cóhay không bác ạ, mà là bác cho người ta tự chọn nên để sau dấu phảy bao nhiêu số là do độ chính xác của nguời ta chớ, còn những điều khác có lẽ em chưa hiểu kỹ được em xin lỗi các bác.

     

    Còn vấn đề về cái lisp em up lên trên là em nhờ bác sửa lại giúp em, em chỉ muốn nghi toạ độ của điểm thôi và cách hiển thị thì như hình em up (nếu được cả mét và inch thì tốt quá bác ạ), và đặc biệt bác vẫn để cho người vẽ đc chọn độ chính xác sau dấu phảy là bao nhiêu số.

     

    Em xin chân thành cảm ơn.

    Chúc bác có những ngày làm việc vui vẻ.


  16. Các bác ơi!

    Em chào các bác.

     

    Em thấy cái lisp này còn một chút vấn đề.

    thứ nhất là nó không có nhắc đến phần thập phân sau dấu phảy bao nhiêu giá trị

    thứ 2 là các chữ toạ độ, diện tích, ... cách nhau xa quá, em góp ý thế này các bác có thể phân biệt bằng dây phảy(,)

    thứ 3 là khi chọn nhiều đường chòn quá thì lại chỉ có một điểm ghi toạ độ đó nên lại phải cọn riêng để toạ độ đường nào vào đường đó

    thứ 4 là nó ghi đó, khong chỉ rõ là toạ độ hay dtích của vị trí hay hình nào(có lẽ nên thêm đường le vào).

     

    Nhân tiện đây em nhờ các bác sửa cho 1 cái lisp nó chưa chạy đc bác ạ, mà em chỉ muốn ghi toạ độ thôi bá ạ và có thể dùng đường LE hoặc line để chỉ rõ toạ độ đó, em up bản vẽ đã hoàn thành mong các bác giúp cho.

     

    http://www.cadviet.com/upfiles/5013522.dwg

    (DEFUN EXCUTE(/ n P TX TY)
     (setq str (strcat "\nPhan so le muon lay [" (itoa sl) "] (press Enter or Space for get default): "))
     (setq n (getint str))
     (if (/= n Nil)
       (setq sl n)    
     )  
     (While T
       (setq P Null)
       (princ "\nPick a point or press ESC for exit:")
       (setq P (getpoint))
       (if (/= P Nil)
         (progn
       (setq TX (rtos (Car P) 2 sl))
       (setq TY (rtos (Cadr P) 2 sl))
       (command "-INSERT" "TD" P "1" "1" "0" TX TY)
         )      
       )  
     );End While  
    )
    (DEFUN INIT()
     (if (= sl Nil)
       (setq sl 2)
     )  
    )
    (DEFUN C:TOADO()
     (INIT)
     (EXCUTE)
    )
    

     

    Em xin cảm ơn.


  17. Xin lỗi vì ssg không nói rõ nên bạn chưa hiểu hết ý. Cái ssg cần là file *.dwg nguyên thuỷ của người ta gởi, bạn chưa hề làm bất cứ thao tác gì trên nó. File *.dwg với cái gọi là "bản vẽ" khác nhau nhiều lắm. Khi nói đến "bản vẽ", người ta thường có xu hướng cho rằng chỉ là tập hợp các hình vẽ, đường nét, kích thước... đang hiển thị. Nhưng với file *.dwg thì ngoài những cái nhìn thấy bằng mắt, nó còn ẩn chứa bên trong nhiều thứ khác nữa, chẳng hạn như các thiết lập dimstyle, textstyle, units... Những cái "vô hình" đó rất quan trọng đối với lập trình.

    Phiền bạn post lại nhé. Bạn có thể dùng ngay tính năng upload của CadViet, không cần dùng 4shared.

    Ngoài ra, ssg xin hỏi thêm một chút, kết quả mà bạn gởi lại cho người ta duyệt là bản in trên giấy hay bắt buộc phải là file *.dwg?

     

    Chào bác SSG.

     

    Em up file lên bác ktra giúp và có gì xin bác hãy báo cho em được biết thêm.

    http://www.cadviet.com/upfiles/5013676_SH3.dwg

    Em xin cảm ơn.


  18. Chào bạn Úi Trời!

    Ssg đã thấy topic này từ hôm nó mới mở ra, cả cái lisp SCC nguyên thuỷ cũng là của ssg. Nhưng xin nói thật, mình không thích dạng lisp này lắm, hôm làm cái SCC cũng vì "chiều ý" của bạn nào đó thôi.

    Lý do: Ssg luôn luôn ủng hộ cách vẽ theo kích thước thật của đối tượng. Khi cần thể hiện nhiều tỷ lệ trong 1 bản vẽ thì dùng layout. Các thao tác scale hình rồi sửa dim là việc làm không khuyến khích.

    Có lẽ mình quá cực đoan chăng? Trên thực tế thì có khi mình không thích nhưng vẫn phải làm, chẳng hạn như phải edit lại bản vẽ có sẵn của ai đó. Họ thiết lập bản vẽ không theo ý mình, lung tung loạn xạ cả lên, trong khi sếp cứ gọi điện "sao lâu thế..."!

    Về cái lisp bạn vừa post cuối cùng. Theo nhận định của ssg thì vấn đề vị trí đặt dim, nếu bạn chạy SCC với Scale Factor>1 kết quả sẽ đẹp như bản gốc. Còn nếu Scale Factor < 1 thì... bó tay!

    Ssg cũng đã làm việc với nhiều bản vẽ có 2 hệ đơn vị song song Metric và Inch, cũng như phải chuyển đổi qua lại giữa 2 hệ đơn vị này. Nếu bản vẽ gốc họ không "độ chế" dim thì trong quá trình xử lý, ssg không cần bất kỳ một trình lisp nào cả, chỉ dùng thuần các tính năng có sẵn của Acad thôi.

    Bạn có thể post lại cho ssg xem bản vẽ gốc (còn "origin", chưa động tay động chân vào) và nêu lại ý muốn thực sự của bạn là gì. Biết đâu ssg sẽ có vài ý gì đó hợp lý hơn chăng...

    Chúc bạn hoàn thành tốt công việc!

     

    Chào bác ssg, rất vui mừng khi đc bác cùng tham gia topic này.

    Nói về lisp thì em không biết nhiều, chỉ biết dùng. Cái lisp em cũng không biết nó tốt xấu đến đâu, nhưng em thấy nó hợp với công việc của mình hiện tại, có thể nó không tốt ở phần nào đó nhưng trong công việc thì cũng phải sử dụng vì hiện tại nó hiệu quả nhất.

    Thực ra ai vẽ cad cũng vậy thôi bác ạ, đều thích vẽ với kthước thật với tỉ lệ 1:1, nhưng trong công việc không thể thích là được và buộc người tkế phái linh hoạt.

    Còn về bản vẽ thì em đã up ở trên rồi http://www.4shared.com/file/90101346/b21cf...676_tl_1-4.html, và đã ghi rõ trong đó BV gốc, đó là bản vẽ họ gửi cho mình, họ đã thay đổi lungtung hết nên mình phải chỉnh sửa lại theo vật mẫu và gửi lại cho họ duyệt được thì tiến hành SX. Còn các BV khác là do mình TK theo vật mẫu nên trước khi ghi các kthước mình SC trước với tỉ lệ 10/254 và đặt chế độ hiển thị cả Mét và Inch rồi mới tiến hành ghi kthước.

     

    Mong các bác chỉ giáo thêm.

     

    Em xin chân thành cảm ơn, chúc mọi nguời luôn vui với công việc.


  19. Chào bác Phanthanhbinh.

     

    Cái lisp bác mới up lên này nó ko scale như ý muốn của em, mà có thể là em ko dùng đc (em dùng thì nó như cái lisp đầu tiên em up lên). Em đã theo lời bác và chỉnh cái lisp đó đc rồi, lần trước em up bản vẽ đó lên có cả phần mà em đã dùng lệnh SCC đó cho bác xem mà, nhưng nó còn lỗi nhỏ em đã nói lần trước rồi, đó là vị trí của các giá trị ghi kthước nó ko đc hợp lý.

     

    Còn về bản vẽ của em thì thực ra nó là bản vẽ của nước ngoài họ muốn bản vẽ đó ko đc thay đổi nên họ cố tình đổi tất cả.

     

    Em up lisp đó để bác xem, lisp này em dùng thì tốt, chỉ mỗi tội vị trí giá trị kthước nó ko tốt thôi

     

    ;;;-------------------------------------------------------------
    (defun ss2ent (ss / i Le e);;;Convert ss to list of ename
    (setq i 0 Le nil)
    (repeat (sslength ss)
    (setq
    e (ssname ss i)
    Le (append Le (list e))
    i (1+ i)
    )
    )
    Le
    )
    ;;;-------------------------------------------------------------
    (defun C:SCC( / ss ssd L k e d dtype dt k0 newdtype);;;SCale Constant
    (setq
    ss (ssget)
    ssd (ssget "p" '((0 . "DIMENSION")))
    L (ss2ent ss)
    )
    (command "scale" ss "" pause (setq k (getreal "\nScale factor:")))
    ;;;(foreach e L
    ;;;(setq d (entget e))
    ;;;(if (wcmatch (cdr (assoc 0 d)) "TEXT,MTEXT")
    ;;;(entmod (subst (cons 40 (/ (cdr (assoc 40 d)) k)) (assoc 40 d) d))
    ;;;)
    ;;;)
    (if ssd (progn
    (setq
    e (ssname ssd 0)
    d (entget e)
    dtype (cdr (assoc 3 d))
    dt (tblsearch "dimstyle" dtype)
    k0 (cdr (assoc 144 dt))
    newdtype (strcat dtype "x" (rtos k))
    )
    (setvar "dimlfac" (/ k0 k))
    
    (setvar "dimdli" (* k (cdr (assoc 43 dt))))
    (setvar "dimexe" (* k (cdr (assoc 44 dt))))
    (setvar "dimexo" (* k (cdr (assoc 42 dt))))
    (setvar "dimasz" (* k (cdr (assoc 41 dt))))
    (setvar "dimcen" (* k (cdr (assoc 141 dt))))
    (setvar "dimtxt" (* k (cdr (assoc 140 dt))))
    (setvar "dimgap" (* k (cdr (assoc 147 dt))))
    
    (if (tblsearch "dimstyle" newdtype)
    (command "dimstyle" "r" newdtype)
    (command "dimstyle" "s" newdtype)
    )
    (command "dimstyle" "a" ssd "")
    ))
    (princ)
    )
    ;;;-------------------------------------------------------------


  20. Chào bạn Ui_troi_2005,

    Sorry vì không kiểm tra kỹ lisp bạn gửi. Mình cứ nghĩ là bạn đã chạy thử rồi và Ok đối với text nên mình không quan tâm nữa chỉ lo sửa dim thôi, ai dè cái lisp của bạn gửi lại chính là với mục tiêu giữ kích thước text lại nguyên vẹn nên sau khi đã scale lại phải đổi về chiều cao text cũ bằng các dòng lệnh trong hàm foreach. Vì thế để cho các text được scale đúng theo yêu cầu của bạn, chỉ cần bỏ toàn bộ các dòng lệnh của hàm foreach này đi là ok.

    Bạn có thể làm như mình dưới đây, tức là thêm các dấu chấm phẩy vào đầu các dòng này hoặc xóa toàn bộ các dòng code này đi là có lisp mới và bạn hãy chạy thử nhé.

    ;;;(foreach e L
    ;;;(setq d (entget e))
    ;;;(if (wcmatch (cdr (assoc 0 d)) "TEXT,MTEXT")
    ;;;(entmod (subst (cons 40 (/ (cdr (assoc 40 d)) k)) (assoc 40 d) d))
    ;;;)
    ;;;)

     

    Còn việc điểm đặt text không theo đúng tỷ lệ scale chính là do khi scale thì lisp cho bạn chọn tâm scale, còn khi trả về chiều cao text cũ thì lisp lại giữ nguyên justify của text. Sau khi bạn bỏ các dòng code trên đi thì sẽ không còn việc sai lệch này nữa và text sẽ được scale ngon lành như nó vốn thế.

     

    Chúc bạn vui.

     

    Chào bác phamthanhbinh.

    Cảm ơn bác đã sửa lại cái lisp đó, bây jờ thì nó rất tốt rồi bác ạ, tất cả đều đã theo ý em, còn chỉ mọtt điều nhỏ đó là vị trí nó vẫn chưa được đẹp lắm(chưa đúng vị trí so với tỉ lệ mới).

    Em up cái file lên và bác xem xem nó có vấn đề jì thì bác xem trực tiếp, em đã ghi mấy cái lỗi trong đó

    http://www.4shared.com/file/90101346/b21cf...676_tl_1-4.html

     

    Cái lisp bác up lên lần thứ 2 sửa lại em ko thể load trong cad nên ko thể kiểm tra được cái đó.

    Bác có thể nói rõ về 2 cái hàm

    (setq a (entget (car ( entsel)))) và (setq b (assoc 0 a))

    Em ko biết sử dụng nó, và cũng chưa hiểu hàm trong cad nó thế nào, mong bác chỉ giáo

     

    Em xin chân thành cảm ơn bác.


  21. Lisp rất hay và tiện nhưng liệu chúng ta có quá lạm dụng nó ko.

    Theo em, yêu cầu của bạn rất đoen giản như sau.

    bạn chọn Dim, ấn Ctrl+1 hoặc gõ lệnh MO để hiện ra Properties

    Tìm đến Mục TEXT -->dòng MEASUREMENT : đây là giá trị thực của DIM

    Ngay dưới là dòng TEXT OVERIDE : bạn gõ giá trị cần cố định vào đây.Từ bây giờ dù Scale hay làm j đi nữa, giá trị đã đc cố định.

    Bọn em là SV, hay edit bản vẽ theo kiểu này..hoi thủ công :undecided:

     

    Cách của bạn thì cũng như thằng fakedim cả thôi, nhưng mà bạn nên biết dùng cad là phải nhanh, như bạn vậy thì cứ mò từng giá trị hay sao?

     

    Theo lời bác Nguyen Hoanh là hơi quá, vì cái thằng fakedim này hay thì có hay nhưng để sửa chữa nó lại hơi vất nếu bản vẽ có nhiều kthước, vả lại nó không thể scale cỡ chữ, kích thước mũi tên,.. nên nó cũng không tốt, vì bản vẽ nếu tỉ lệ scale quá lớn thì mũi tên và chữ lại quá nhỏ, tỉ lệ quá nhỏ thì lại ngược lại.

     

    Còn hiện nay trên diễn đàn có lisp với lệnh scc nó cũng thực hiện yêu cầu như thằng fakedim, cũng có lỗi như trên nhưng nó vẫn là Dimension, nên chỉnh sửa như thường. các bác nên xem qua (nếu chưa biết).

     

    mình up lên ai chưa biết có thể xem qua và cho ý kiến, và chỉnh sửa lisp này để hoàn thiện hơn

     

     

     

    ;;;-------------------------------------------------------------

    (defun ss2ent (ss / i Le e) ;;;Convert ss to list of ename

    (setq i 0 Le nil)

    (repeat (sslength ss)

    (setq

    e (ssname ss i)

    Le (append Le (list e))

    i (1+ i)

    )

    )

    Le

    )

    ;;;-------------------------------------------------------------

    (defun C:SCC( / ss ssd L k e d dtype dt k0 newdtype) ;;;SCale Constant

    (setq

    ss (ssget)

    ssd (ssget "p" '((0 . "DIMENSION")))

    L (ss2ent ss)

    )

    (command "scale" ss "" pause (setq k (getreal "\nScale factor:")))

    (foreach e L

    (setq d (entget e))

    (if (wcmatch (cdr (assoc 0 d)) "TEXT,MTEXT")

    (entmod (subst (cons 40 (/ (cdr (assoc 40 d)) k)) (assoc 40 d) d))

    )

    )

    (if ssd (progn

    (setq

    e (ssname ssd 0)

    d (entget e)

    dtype (cdr (assoc 3 d))

    dt (tblsearch "dimstyle" dtype)

    k0 (cdr (assoc 144 dt))

    newdtype (strcat dtype "x" (rtos k))

    )

    (setvar "dimlfac" (/ k0 k))

    (if (tblsearch "dimstyle" newdtype)

    (command "dimstyle" "r" newdtype)

    (command "dimstyle" "s" newdtype)

    )

    (command "dimstyle" "a" ssd "")

    ))

    (princ)

    )

    ;;;-------------------------------------------------------------


  22. Chào bác "phanthanhbinh"

    Em đã kiểm tra kỹ hơn và thấy chỉ một số bản vẽ nó mới ko thực hiện số lượng Dimension nhiều, còn những bản vẽ khác thì nó tuân theo tương đối tốt, còn một số cái đó là về text, các chữa ghi trên BV nó ko theo nó vẫn vậy, và phần vị trí đặt giá trị ghi nó ko tuân theo tỉ lệ, nó sẽ bị kéo dài hơn so với cỡ chữ.

     

    Em up bản vẽ mà nó ko tuân theo lện lên, có jì bác xem lại júp em.

     

    httpwww.cadviet.comupfilesCoxa.dwg

     

    Thanks

×